码迷,mamicode.com
首页 > 编程语言 > 详细

unity 激活一个GameObject时,容易忽略的问题

时间:2020-05-11 19:03:50      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:system   start   绑定   new   pre   eof   也会   one   cti   

using System;
using UnityEngine;
public class Foo:MonoBehaviour{
    private void Awake(){
        Debug.Log("Foo.Awake();");
    }
    private void OnEnable(){
        Debug.Log("Foo.OnEnable();");
    }

    private void Start(){
        Debug.Log("Foo.Start();");
    }
}
using System;
using UnityEngine;

public class Test:MonoBehaviour{
    
    public GameObject foo2;//Hierarchy面板中绑定Foo脚本的GameObject(未激活、在绑定Test脚本的GameObject上方)
    
    private void Start(){
        //Test1();
        Test2();
    }
    
    private void Test1(){
        GameObject fooGameObject=new GameObject("Foo",typeof(Foo));
        //创建GameObject后即使立刻SetActive(false),绑定代码中的Awake与OnEnable函数也会触发
        fooGameObject.SetActive(false);
        /*output:
        Foo.Awake();
        Foo.OnEnable();
        */
        
        Debug.Log("fooGameObject.SetActive(true); Start");
        fooGameObject.SetActive(true);
        Debug.Log("fooGameObject.SetActive(true); End");
        //在SetActive(true)函数内调用OnEnable函数
        /*output:
        fooGameObject.SetActive(true); Start
        Foo.OnEnable();
        fooGameObject.SetActive(true); End
        Foo.Start();
        */
    }
    
    private void Test2(){
        Debug.Log("fooGameObject.SetActive(true); Start");
        foo2.SetActive(true);
        Debug.Log("fooGameObject.SetActive(true); End");
        //在SetActive(true)函数内调用Awake与OnEnable函数
        /*output:
         fooGameObject.SetActive(true); Start
         Foo.Awake();
         Foo.OnEnable();
         fooGameObject.SetActive(true); End
         Foo.Start();
         */
         
    }
}

unity 激活一个GameObject时,容易忽略的问题

标签:system   start   绑定   new   pre   eof   也会   one   cti   

原文地址:https://www.cnblogs.com/kingBook/p/12870706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!