游戏对象创建顺序问题
本文关键字:问题 顺序 创建 对象 游戏 | 更新日期: 2023-09-27 17:50:28
我目前正在Unity3D中制作库存系统,并遇到了一个奇怪的问题。我已经为我的库存系统创建了非monobehaviour类(以防万一),这样我就有了一个包含Slot对象列表的库存类,而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(我的播放器的一部分)还没有被创建,在我看来,游戏对象是按字母顺序创建的…?
我该如何处理这个问题?
您可以在项目设置中指定脚本执行顺序(Edit ->项目设置->脚本执行顺序),因此使用它来确保脚本以正确的顺序执行。除此之外,您还可以使用Awake()
方法,因为所有Awake
都在任何Start()
方法之前执行。希望这些组合对你有所帮助!
我通过在我的InventoryController脚本中创建一个中间变量来解决这个问题,再加上创建一个"手动"getter;https://gist.github.com/toreau/f7110f0eb266c3c12f1b
不知道为什么要这样做
很久以前就有人问过这个问题了,但如果有人遇到这个问题,这里有一个提示:您可以在"编辑项目设置"脚本执行顺序中配置脚本执行顺序。只需在"默认时间"之前添加任何需要首先执行的脚本即可。在默认时间之前的所有内容将在Unity加载之前执行,之后的所有内容将在Unity处理所有其他脚本之后执行。