我目前正在研究Unity3D中的库存系统,并遇到了一个奇怪的问题。我已经为我的库存系统创建了非MonoBehaviour类(如果重要的话),所以我有一个Inventory类,它包含Slot对象列表,后者又包含Item对象列表。
然后我将一个组件脚本添加到我的“HudInventoryPanel”,名为“HudInventoryController”,它看起来像这样:
using UnityEngine;
using System.Collections;
public class HudSlotController : MonoBehaviour {
private InventoryController ic;
// Use this for initialization
void Start () {
ic = GetComponent<InventoryController>();
}
// Update is called once per frame
void Update () {
}
}
但是,在Start()方法中,还没有创建InventoryController(我的播放器的一部分),在我看来,游戏对象是按字母顺序创建的......?
我该如何处理这个问题?
答案 0 :(得分:2)
您可以在项目设置中指定脚本执行顺序(编辑 - &gt;项目设置 - &gt;脚本执行顺序),因此请使用它来确保脚本以正确的顺序执行。除此之外,您可以使用Awake()
方法,因为在Awake
方法之前执行所有Start()
。希望这些组合可以帮到你!
答案 1 :(得分:0)
我通过在InventoryController脚本中创建一个中间变量,再创建一个“手动”getter来解决这个问题。 https://gist.github.com/toreau/f7110f0eb266c3c12f1b
不知道为什么我必须这样做。