gpt4 book ai didi

c# - 如何找到一个游戏对象(在层次结构中较低),从根游戏对象开始?

转载 作者:行者123 更新时间:2023-12-05 05:10:38 26 4
gpt4 key购买 nike

好吧,这个有点难以解释。

  • 假设您的游戏中有多个角色。
  • 每个角色(预制件)可能有不同的骨骼结构和骨骼名称。
  • 为简单起见,您重命名了某些游戏对象(在预制件中)。 (例如每个角色有一个名为“Head”的游戏对象)

现在,给定一个 OnTriggerEnter() 方法,您可以从对撞机中找到“根”游戏对象。

从这一点来看,你如何从这个游戏对象的根定位“头”游戏对象?

请记住,每个游戏对象(角色)都包含一个头部。你想找到这个特定的游戏对象的头。

我试过的代码:(返回空引用)

private void OnTriggerEnter(Collider char)
{
var en = char.gameObject;
var head = en.transform.Find("Head");
}

是否可以在不明确键入每种不同类型骨骼结构的每个层次结构的情况下做到这一点?

最佳答案

Find 不会降低 Transform 层次结构。如果找不到子项,Find 将只搜索给定的子项列表以查找命名的 Transform,null is returned .换句话说,它不会查看其子项的子项。如果您希望对已经是 child 的 child 使用 Find,那么您必须像使用 / 的路径一样访问它,例如。 transform.Find(" body /头部")

一般来说,这样的字符串引用是一个非常糟糕的主意,一种方法是创建一个空脚本(比如 Head.cs)并将其附加到父 GameObject 的子对象,而不是寻找通过字符串引用 transfrom 你可以寻找组件 Head.cs

它看起来像这样:

private void OnTriggerEnter(Collider collider)
{
//Where Head is an empty script attached to the Head.
var head = collider.GetComponentInChildren<Head>();
//Do something... Logging the name for example
Debug.log(head.transfrom.name);
}

关于c# - 如何找到一个游戏对象(在层次结构中较低),从根游戏对象开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56410705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com