Object 在Unity3D中的对象中添加游戏对象

Object 在Unity3D中的对象中添加游戏对象,object,unity3d,Object,Unity3d,这个问题可能看起来有点奇怪,但我想使用脚本将对象“胶囊”添加到我的游戏对象中(见下图) 这是我在对象中添加组件的代码: object1 = (GameObject)Resources.Load (name) as GameObject; myObject = Instantiate (object1); myObject.transform.SetParent (parent.transform); myObject.transform.posi

这个问题可能看起来有点奇怪,但我想使用脚本将对象“胶囊”添加到我的游戏对象中(见下图)

这是我在对象中添加组件的代码:

object1 = (GameObject)Resources.Load (name) as GameObject;
        myObject = Instantiate (object1);
        myObject.transform.SetParent (parent.transform);
        myObject.transform.position = new Vector3 (0, 0, 0);
        myObject.transform.localScale = new Vector3 (70f, 70f, 70f);
        myObject.AddComponent<BoxCollider> ();
        myObject.AddComponent<CapsuleCollider> ();
        myObject.AddComponent<MeshRenderer> ();

        myObject.gameObject.SetActive (true);
object1=(GameObject)Resources.Load(name)作为GameObject;
myObject=实例化(object1);
myObject.transform.SetParent(parent.transform);
myObject.transform.position=新向量3(0,0,0);
myObject.transform.localScale=新向量3(70f,70f,70f);
myObject.AddComponent();
myObject.AddComponent();
myObject.AddComponent();
myObject.gameObject.SetActive(true);

可能的解决方案是什么?多谢各位

似乎对“添加
游戏对象
”的含义存在误解,让我们来分析一下。在Unity中,
GameObject
是一个
Transform
和一组“组件”。该
Transform
可以是另一个
Transform
的“父”或“子”<代码>游戏对象及其“变换继承权”显示在“继承权”统一窗口中。单个
游戏对象
及其“组件”(实现
单一行为的东西
)显示在“Inspector”Unity窗口中

根据这些术语,您不能“将
游戏对象
添加到另一个
游戏对象
”,但是您可以通过将一个
转换
作为另一个
游戏对象的子对象来“将
游戏对象
添加到另一个
中”

似乎您在这里尝试的是将您的“胶囊”添加为每个
游戏对象的子对象。在这种情况下,您只需为每个
游戏对象
,实例化一个新的“胶囊”实例(可以将其设置为预置),并将其设置为
游戏对象
的父对象:

public class CapsuleAdder : MonoBehaviour {
    private const string capsulePrefabName = "whatever"; // Prefab name goes here

    void Awake() {
        GameObject newCapsule = Instantiate(Resources.Load(capsulePrefabName) as GameObject) as GameObject;
        newCapsule.transform.SetParent(transform); // Sets parent to this
    }
}

只要你正确地设置了
capsulePrefabName
,任何带有此脚本的
GameObject
都会在你小时候生成一个你的胶囊预置副本。

似乎对“添加
GameObject
”的意思有误解,让我们来分析一下。在Unity中,
GameObject
是一个
Transform
和一组“组件”。该
Transform
可以是另一个
Transform
的“父”或“子”<代码>游戏对象
及其“变换继承权”显示在“继承权”统一窗口中。单个
游戏对象
及其“组件”(实现
单一行为的东西
)显示在“Inspector”Unity窗口中

根据这些术语,您不能“将
游戏对象
添加到另一个
游戏对象
”,但是您可以通过将一个
转换
作为另一个
游戏对象的子对象来“将
游戏对象
添加到另一个
中”

似乎您在这里尝试的是将您的“胶囊”添加为每个
游戏对象的子对象。在这种情况下,您只需为每个
游戏对象
,实例化一个新的“胶囊”实例(可以将其设置为预置),并将其设置为
游戏对象
的父对象:

public class CapsuleAdder : MonoBehaviour {
    private const string capsulePrefabName = "whatever"; // Prefab name goes here

    void Awake() {
        GameObject newCapsule = Instantiate(Resources.Load(capsulePrefabName) as GameObject) as GameObject;
        newCapsule.transform.SetParent(transform); // Sets parent to this
    }
}

只要你正确地设置了
capsulePrefabName
,任何带有此脚本的
GameObject
都会在你小时候生成你的胶囊预制的副本。

这里有什么问题?我希望myObject将“胶囊”添加为一个组件。可能吗?不可能将其添加为组件。你是说作为一个孩子吗?嗯,是的,作为一个孩子。对不起,您的代码中有什么不起作用?你有什么错误吗?
SetParent
有效吗?我们需要更多关于您的问题的信息。您的问题是什么?我希望myObject添加“胶囊”作为组件。可能吗?不可能将其添加为组件。你是说作为一个孩子吗?嗯,是的,作为一个孩子。对不起,您的代码中有什么不起作用?你有什么错误吗?
SetParent
有效吗?我们需要关于您的问题的更多信息。是否应将我的胶囊添加到资源文件夹中?@Sarah Yes<代码>资源。加载
仅适用于“资源”文件夹中的资产。@Sarah我还忘记了第一次调用
实例化
。编辑了答案。是否应将我的胶囊添加到资源文件夹中?@Sarah Yes<代码>资源。加载
仅适用于“资源”文件夹中的资产。@Sarah我还忘记了第一次调用
实例化
。编辑了答案。