首页 > 解决方案 > 预制空 Unity C#

问题描述

检查员视图预制件

尽管我已经在 Unity 中分配了它,但预制件仍为 null。我已经在很多地方搜索了我仍然没有找到错误的确切位置。

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ButtonManager : MonoBehaviour 
{
    public GameObject myPrefab;
    public Transform Panel;

    public void distribution(List<InventoryItem> list){
        for (int i=0; i<list.Count; i++){

            Instantiate(myPrefab, new Vector3(0, 0, 0), Quaternion.identity);
       }
    }
}

编辑器界面

这可能是我分配的方式button_manager_script吗?

[更新] ButtonScriptOne

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ButtonScriptOne : MonoBehaviour {

    public ButtonManager button_manager_script;

    void Start () {
        button_manager_script = new ButtonManager();
    }

    public void test_function(){
        GlobalState.lazyLoad = true;
        var list_items = new List<InventoryItem>();
        list_items = DataStore.FindAllItems();

        Debug.Log("First: "+ list_items[0]);

        button_manager_script.distribution(list_items);
    }
}

标签: c#unity3d

解决方案


这可能是我分配 button_manager_script 的方式吗?

是的

1:button_manager_script = new ButtonManager();你不能这样做。ButtonManager是一种 MonoBehaviour,Unity 应该向您抱怨调用new而不是AddComponent(or GetComponent)。我不知道为什么没有,或者您是否忽略了该错误并将其从控制台中清除。

2:因为无论如何您都设法做到了,所以您的非附加组件有一个空myPrefab字段,因为您从未将其设置为内部的任何内容ButtonScriptOne


推荐阅读