版权声明:本文为博主原创文章,未经博主允许不得转载。 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方法继续执行