zoukankan      html  css  js  c++  java
  • 小白错误<二>———未达到预设子弹生命时间,子弹自动消失

    如需转载,请保留本文链接。

    出现问题:子弹正常出现,偶尔几枚子弹会有,没有存活到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()中调用一次.

  • 相关阅读:
    【NodeJS】---express配置ejs mongoose route等
    【CSS3】---层模型position之fixed固定定位、absolute绝对定位和relative相对定位
    【CSS3】---:before :after生成内容
    px转rem的填坑之路
    markdown编写文件目录结构
    js reduce数组转对象
    处理Promise.reject()
    js事件循环
    为什么[] == false 为true
    为什么不建议用var
  • 原文地址:https://www.cnblogs.com/yikecaidechengzhangshi/p/7636116.html
Copyright © 2011-2022 走看看