弹簧的应用 不是很懂 为什么设置2下 需验证弹簧的用发
弹簧的应用 不是很懂 为什么设置2下 需验证弹簧的用发
游戏逻辑的判定
场景中小鸟剩余的个数大于猪的数量我们就赢了
复制 bird 为三只
设置GameManager管理我们的小鸟
新建空物体作为 GameManager
public List<Bird> birds;
public List<Pig> pigs;
现在确定逻辑,当我们第一支小鸟还没有飞的时候,后面的小鸟的 Spring Joint 2D 和 Bird 组件要禁用
GameManager的使用:
1.列表 存储多个游戏物体,动态存储
2.Inovke()调用方法
3.remove()移除方法
游戏逻辑 gameManager
1.初始化小鸟状态:激活第一只小鸟,其他小鸟禁用
2.下一只小鸟状态激活:移除上一只小鸟,激活下一只小鸟
3.判定场景中猪的数量:猪的数量决定小鸟的激活
单例模式是啥意思?
[hideinspector]
public
虽然是共有的,但是面板里面是隐藏的
gamemanager
Start()将在MonoBehavior创建后在该帧Update()第一次执行前被调用;
Start()函数只在脚本实例被启用时才会执行;
Start函数总是在Awake函数之后执行。
如果把Initialized()放在Awake中,
MonoBehavior还没有创建,Initialized()无法处理到birds和pigs,
不会生效,3只鸟依然团在一起
放在Start中执行,一切正常。
一般开发中都是在Awake函数中获取游戏对象或者脚本实例的信息,然后在Start函数中进行一些获取之后的初始化设置。
一只鸟,二只鸟,三只鸟
Gamemanager
老师我的第二个和第三个鸟不会上弹弓 他们只会原地爆炸。。。
感觉上是弹簧组件没有被使用,我照着资源对照了一遍也还是没有发现问题
通过List<>存储小鸟和猪
[HideInspector]在unity的面板上隐藏
单例
13-游戏逻辑的判定,实现多只小鸟的飞出
胜利的判定: 场景中小鸟个数大于猪的个数
复制成3只小鸟
新建【空物体】,命名:GameManager,位置归零
新建脚本,命名:GameManager
(让小鸟禁飞:Springjoint失活)
//获取到场景中3只小鸟:通过list集合
public List<Bird> birds;
//获取到猪的集合
public List<Pig> pig;
//初始化小鸟
private void Initialized()
{
//遍历集合
for(int i=0;i<birds.Count;i++)
{
if(i==0)//第一只小鸟
{
birds[i].enabled=true;
【注意:在Bird脚本中写一个:[HideInspector]
public SpringJoint2D sp】
birds[i].sp.enabled=true;
}
else
}
birds[i].enabled=false;
birds[i].sp.enabled=false;
}
给GameManager赋值
飞出去对小鸟进行删除操作,在GameManager脚本中
public static GameManager _instance;
private void Awake()
{
_instance=this;
}
飞出去对小鸟进行删除操作,在Bird脚本中,新建方法Next
//下一只小鸟的飞出
void Next()
{
GameManager._instance.birds.Remove(this);
Destroy(gameObject);
Instantiate(boom,transform.position,Quaternion.identity);
}
void Fly()
{
}
在GameManager脚本中,新建方法NextBird()
//判断游戏逻辑
public void NextBird()
{
if(pig.Count>0)
{
if(birds.Count>0)
{
//下一只飞
Initialized();
}else
{
//赢了
}
}else
{
//赢了
}
}
在Bird脚本中
void Next()
{
GameManager._instance.NextBird();
}
复制猪
Pig脚本中
public bool isPig=false;
void Dead()
{
if(isPig)
{
GameManager._instance.pig.Remove(this);
}
}
在GameManager脚本中,新建方法Start()
private void Start(){
Initialized();
}
public class GameManager
public List<Bired> birds;
publicList<Pig> pig;
public static GameManager _instance;
public void Awake()
{
_instance=this;
}
private void Initialized()
{
for(int i =0; i<birds.Count;i++)
{
if(i==0)//第一只小鸟
{
birds[i].enabled=true;
birds[i].sp.enabled=true;
}
else
{
birds[i].enabled=false;
birds[i].sp.enabled=false;
}
}
}
hideinspector 可以让公有变量在某个地方看不见
不太清楚
游戏胜利判定。
hideininspector
飞出去之后,5秒判断一下。
猪和木块可以用同一个脚本,
gamemanager
管理小鸟,
管理猪,
初始化,第一只小鸟, 先从现象入手,然后写代码,
init( 遍历鸟集合, 第一只小鸟,bird脚本和sp打开,其他的关上 );
鸟飞的时候, gamemanager 单利,
5秒后调用 next
鸟,next(); Gamemanager.instance.birds.remove(this);销毁自身, 实例化爆特效,
gamemanager
nextbird()
{
观察猪的数量,
观察鸟的数量。
}
猪和木块进行区分。是猪的化,进行移除。
_instance (单例模式)
学习面向对象程序设计的朋友应该知道,我们大多数情况下通过 new 操作来实例化对象的。对于一些仅需要一次初始化的对象来说,频繁的new操作无疑会过多浪费内存空间。基于此,单例模式便应运而生了。所谓单例,即"一次初始化,多次操作"。
GameManger
获取小鸟、猪 List<Bird> List<Pig>
初始化小鸟 Initialized()
激活第一只小鸟 禁用其他小鸟