Unity 5.6 - C# - 使用AddComponent <T>将GameObject添加到另一个GameObject

Gun*_*ram 2 c# unity-game-engine htc-vive

我正在处理的函数实例化一个GameObject(使用预制).我将此GameObject存储在局部变量中

GameObject tmpObject;
Run Code Online (Sandbox Code Playgroud)

工作完美无瑕.接下来我尝试将此GameObject分配给我的Vive控制器的GameObject表示,如下所示:

tmpObject = tmpController.gameObject.AddComponent<GameObject>() as GameObject;
Run Code Online (Sandbox Code Playgroud)

我得到的错误是UnityEngine.GameObject无法转换为UnityEngine.Component.

我错过了简单/基本吗?我尝试按照Unity的官方指南添加一个SphereCollider ,它确实有效,所以为什么我不能添加GameObject?是否有将GameObjects添加到另一个GameObject的解决方法?非常感谢任何帮助!

Pro*_*mer 6

您无法将GameObject添加到GameObject.开始时甚至没有意义.你只能附加组件.我认为你想让GameObject成为另一个GameObject的孩子......你可以使用这个SetParent功能.请参阅下面的示例,了解如何创建GameObject以及您可以执行的操作:

创建一个名为"BallObject"的新GameObject

GameObject a = new GameObject("BallObject");
Run Code Online (Sandbox Code Playgroud)

创建一个名为"BrickObject"的新GameObject

GameObject b = new GameObject("BrickObject");
Run Code Online (Sandbox Code Playgroud)

使"BrickObject"对象成为"BallObject"对象的父对象

a.transform.SetParent(b.transform);
Run Code Online (Sandbox Code Playgroud)

使"BallObject"对象本身."BrickObject"对象不再是它的父级了

a.transform.parent = null;
Run Code Online (Sandbox Code Playgroud)

将脚本/组件添加到"BrickObject"对象

b.AddComponent<Rigidbody>();
Run Code Online (Sandbox Code Playgroud)

  • 这确实是我想要的 - 谢谢! (2认同)