虽然已分配变量,但在销毁它时未分配变量?

时间:2016-06-03 13:32:11

标签: c# object unity3d reference

我非常坚持使用这段代码。我不会发布相关部分的整个代码。

问题是: 当玩家丢弃一个项目时,所以基本上掉落了正手或支持手的孩子(库存老虎机),然后它会给出以下错误: '变量'主手'尚未分配。'

但是已经分配了变量,并且脚本的工作方式如何。我只是想摆脱这个错误。有什么想法吗?

请帮忙!

 public bool handsFull = false;
        public Transform mainHand;
        public Transform supportHand;

        public GameObject player;
        public GameObject[] Items;

        public float throwDistance = 2f;

void Update () {
    //Dropping Items
            if (Input.GetKey (KeyCode.G)) {

                if (Input.GetMouseButtonDown (0) && mainHand.childCount > 0) {
                    GameObject itemToDrop = mainHand.GetChild(0).gameObject;
                    DropItem (itemToDrop);


                }
                if (Input.GetMouseButtonDown (1) && supportHand.childCount > 0) {
                    GameObject itemToDrop = supportHand.GetChild(0).gameObject;
                    DropItem (itemToDrop);



                }

            }
}

public void DropItem(GameObject itemToDrop)
    {
        for (int i = 0; i < Items.Length; i++) {
            GameObject itemDropped;
            if (Items[i].name == itemToDrop.name) {
                itemDropped = (GameObject)Instantiate (Items [i], itemToDrop.transform.position, Quaternion.identity);
                itemDropped.tag = "Item";
                itemDropped.name = itemToDrop.name;
                Destroy (itemToDrop);
                itemDropped.transform.SetParent (null);
                itemDropped.transform.Translate (0, 0, throwDistance);
                itemDropped = null; 
                itemToDrop = null;
                return;

                //hand not defined? -

            }


        }
}

1 个答案:

答案 0 :(得分:4)

解决方案很简单,Unity不是OO。

别忘了,上面的剧本......

...仅作为某个GameObject的组件存在...附加到GameObject。

很可能在某处有一个GameObject,附带了脚本。你不知道它或者你忘了它。

(*)请记住,Prefabs可以很容易地在Unity中找到你。不要忘记你只能在&#34;内设置检查员拖拽。 Unity中的预制件 - 它有点令人困惑。在预制件中,您无法连接到外部世界的任何地方,直到现场。