游戏对象创建顺序问题

本文关键字:问题 顺序 创建 对象 游戏 | 更新日期: 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处理所有其他脚本之后执行。