GameObject.Find、Transform.Find和Transform.FindChild

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Rhett_Yuan/article/details/79849132

      在Unity开发游戏中我们经常会遇到通过路径去找到我们想要的节点,Unity的API中给我们提拱了三个方法(题目中的三个),但是这三个又略有不同,其中后两个我们可以认为是相同的,在Unity2017里后两个方法好像已经合并为一个了,即Find

       首先看我们的节点关系:其中脚本挂在了GameObject上

       

Transfrom:

路径(函数参数) 节点是否隐藏 能否找到
GameObject false/true false/false
GameObject1 false/true true/true

GameObject:

路径(函数参数) 节点是否隐藏 能否找到
GameObject false/true false/true
GameObject/GameObject1 false/true false/true

总结:

对于GameObject.Find()方法,只要查找路径中任何一个节点active为false,那么我们就无法找到这个节点

而对于Transform.Find()方法,首先路径不能带有节点本身,其他无论路径中的节点是否隐藏,我们都可以通过路径去找到这个节点

测试的过程中发现,如果一个节点隐藏了,那么这个节点上的脚本的Awake方法也不会执行,而如果单纯的隐藏节点下的脚本,该脚本的Awake方法继续执行

       

猜你喜欢

转载自blog.csdn.net/Rhett_Yuan/article/details/79849132