星星是一个消失的动画,fadeOut,这个动画在DoTween里面有问题,验证下来一旦对一个对象实施此操作,则所有对象都会消失,而且重新开始这些对象也无法恢复显示。这里我们需要添加一个Aniation来处理星星 消失。
1 在场景中选中星星对象,如图所示打开Animation窗口,并选择create按钮
2 给这个动画取个名字叫fadeout,并保存3 点击addProperty->Image->Color后面的加号
4 如图所示,在第2个关键帧的位置把color.a变为0,随后在这里加个回调函数,如图所示点击那个红色部分按钮
这个时候点击Animation里面的play按钮可以看到星星消失的样子了。
5 继续选择star对象,然后选择window->Animator窗口,初始图如下所示
我们需要修改一下,改成这个样子,并选择Pareameters,添加一个bool值 ,为start
6 选中start->fadeout状态之间这条线,如图所示把condition加上去
7在asset中选中fadeout这个动画 ,然后去loop去掉
8 动画制作完成,接下来与player一样,需要使用脚本来对其进行控制了,在Scripts文件夹中新建一个star.cs,的C#文件。
public class Star : MonoBehaviour {
public GameObject _starObj;
private Transform _trans;
private Animator _ani;
// Use this for initialization
void Start () {
}
void Awake(){
this._trans = _starObj.GetComponent<Transform> ();
this._ani = _starObj.GetComponent<Animator> ();
}
// Update is called once per frame
void Update () {
}
public void fadeOut(){
this._starObj.SetActive(true);
this._ani.SetBool ("start", true);
}
// 之前设置的帧回调函数
public void OnCompelte(){
Destroy(this.gameObject);
}
}
然后把这个脚本拖拽到星星对象上,并把星星对象绑定进来。
星星的动画已经搞定,现在把它做成一个prefab,在asset中新建一个Folder,命名为Prefabs,在里面新建一个prefab,命名为star,把界面上的星星对象拖入其中就可以了。
9 在player.cs里面加上这个函数
public Canvas _cvs; // canvas对象,在编辑器中将canvas拖入
public GameObject _starobj; // 星星prefab对象 在编辑器中把星星的prefab拖入
public void spwanStar(){
float endx = 372f;
float startx = -295;
GameObject obj = (GameObject)Instantiate (this._starobj, new Vector3 (0, 0, 0), Quaternion.identity);
obj.GetComponent<Transform> ().SetParent (_cvs.GetComponent<Transform>());
obj.GetComponent<Transform> ().localPosition = new Vector3 (Random.Range (startx, endx), 29, 0);
obj.GetComponent<Star> ().fade ();
}
只要调用这个函数,屏幕 上就会随机的出现星星了。
这个网站解决了大家开始设计阶段的问题,轻量级的各种设计模型,强烈推荐