unity 使用GameObject.SetActive(true)激活对象时,会在SetActive内部调用Awake和OnEnable函数
对象 函数 调用 Unity 内部 激活 True 使用
2023-09-27 14:25:33 时间
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();
*/
}
}
总结:
当调用GameObject. SetActive(true)方法激活对象时,会在方法内部调用Awake和OnEnable函数,然后才调用Start函数。
Awake与Start函数不管吊销和激活多少次都只会调用一次。
相关文章
- 【C++】类和对象--类的6个默认成员函数
- python基础之字符串、函数、BUG和异常类型介绍及类和对象详细笔记
- 【C++】函数对象/STL算法
- Scala:Scala基础语法【Scala语言是一个完全面向对象编程语言-->万物皆对象;Scala语言是一个完全函数式编程语言-->万物皆函数】
- Java中ArrayList的对象引用问题
- python参数传递:对象的引用
- 轻量函数式 JavaScript:七、闭包 vs 对象
- Java对象声明和实例化
- 盘点对象存储九大关键点
- js深入研究之克隆,属性,数组,对象,函数
- JVM系列四(对象分配策略).
- Asp.net动态页面静态化之输出对象属性(实体关联)
- History 对象及事件监听详解
- 关于类成员函数中访问同类对象的私有成员
- 函数和对象
- [C++] 对象指针使用方法
- PyQt(Python+Qt)学习随笔:窗口对象尺寸调整相关的函数resize、showMaximized、showNormal、showMinimized
- PyQt学习随笔:槽函数获取信号发送对象的方法
- 仿函数及可调用对象类型
- 【JAVA百炼成仙】化神篇 上——面向对象(对象、类)
- Ceph对象存储网关中的索引工作原理<转>
- JavaScript 以一种优雅得方式输出对象
- IE浏览器提示对象不支持“append”属性或方法
- ArcEngine - 栅格数据访问的-对象模型
- 图解 Google V8 # 02:函数即对象:一篇文章彻底搞懂 JavaScript 的函数特点
- 18.C++-[ ]操作符使用 、函数对象与普通函数区别(详解)
- Vue3.x 报 Uncaught TypeError:Object(...) is not a function( Vue3对象不是函数解决思路)