在项目开发中,有时要为某一对象(如X对象)动态添加一个子对象,这就需要判断X对象是否已经具有了子对象,因为是动态实时添加子对象,如果不做这样的判断以及相应的限制,就会给X对象添加上一批相同的子对象,这不是我们想要的。
那么,如何判断某一个对象是否有子对象呢?
其实也很简单,可通过计算该对象身上有多少个子对象来判断该对象是否有子对象,语句如下:
gameObj.GetComponentsInChildren<Transform>(true).Length
gameObj是被测对象,查找它的子对象可以通过GetComponentsInChildren<Transform>(true)实现,Length可视为有多少个对象。
但需要主意的是,gameObj本身也会被记录到Length之中,所以在判断gameObj对象是否有子对象时,应做如下书写(而不是写成==0)
if (gameObj.GetComponentsInChildren<Transform>(true).Length <=1)
{
}
例如,场景中放有三个对象:A、B、C,其中A对象中有一个子对象,B对象中有两个子对象,C对象没有子对象,如果我想只对没有子对象的对象添加一个名字为door的子对象,可用下面的语句段:
if (gameObj.GetComponentsInChildren<Transform>(true).Length <=1)
{
newGameObjec