标签:alt pre obj 自动 adb private tac life atime
如需转载,请保留本文链接。
出现问题:子弹正常出现,偶尔几枚子弹会有,没有存活到5秒钟,也没有碰到物体,就自动消失的问题.
解决关键函数:

错误代码如下:
public class BulletBase : MonoBehaviour
{
public float Speed;
float lifeTime;
private void Awake()
{
lifeTime = 0;
}
private void Start() { }
private void Update()
{
Run();
disable();
}
//子弹运动方式
public virtual void Run() { }
//子弹生存5秒后死亡
private void disable()
{
lifeTime += Time.deltaTime;
if (lifeTime >= 3)
{
gameObject.SetActive(false);
Pool.DeadBulletList.Add(gameObject);//将子弹加入死亡池,预备集中处理
lifeTime = 0;
}
}
}
正确代码如下:
public class BulletBase : MonoBehaviour
{
public float Speed;
float lifeTime;
private void Awake()
{
lifeTime = 0;
}
private void OnEnable()
{
lifeTime = 0;
}
private void Start() { }
private void Update()
{
Run();
disable();
}
//子弹运动方式
public virtual void Run() { }
//子弹生存5秒后死亡
private void disable()
{
lifeTime += Time.deltaTime;
if (lifeTime >= 3)
{
gameObject.SetActive(false);
Pool.DeadBulletList.Add(gameObject);//将子弹加入死亡池,预备集中处理
lifeTime = 0;
}
}
}
问题所在:
当gameobject setactive(true)时,会调用OnEnable()方法,不会调用Awake()方法.
Awake()初始化lifeTime=0后,不再进行调用,再次使用gameobject时会调用OnEnable()方法,所以lifeTime=0也需要在OnEnable()中调用一次.
标签:alt pre obj 自动 adb private tac life atime
原文地址:http://www.cnblogs.com/yikecaidechengzhangshi/p/7636116.html