如何将非行为脚本添加到脚本执行顺序中

本文关键字:脚本 添加 顺序 执行 | 更新日期: 2023-09-27 18:09:53

因此,我试图在教程的基础上创建一个库存系统,但在某个时候(特别是当我试图将带有图标和所有东西的"物品"添加到列表中时(,我会出现一个超出范围的错误。本教程规定,为了消除这个错误,我必须为我当前使用的3个脚本设置一个特定的执行顺序。

问题是,其中一个脚本不是一个单一的行为,虽然他只是把它添加到订单中,但我似乎做不到,我也看不到其他消除错误的方法。

using UnityEngine;
 
using System.Collections;

[System.Serializable]
    public class Item {
    public string itemName;
    public int itemID;
    public string itemDesc;
    public Texture2D itemIcon;
    public int itemPower;
    public int itemSpeed;
    public ItemType itemType;
    public enum ItemType {
        Weapon,
        Consumable,
        Quest
    }
    public Item (string name, int id, string desc, int power, int speed, ItemType type)
    {
        itemName = name;
        itemID = id;
        itemDesc = desc;
        itemIcon = Resources.Load<Texture2D> ("Item Icons/"  + name);
        itemPower = power;
        itemSpeed = speed;
        itemType = type;
    }
}

我不知道它们是否有必要,但这是其他两个脚本

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class ItemDatabase : MonoBehaviour {
    public List<Item> items = new List<Item> ();
    void Start ()
    {
        items.Add (new Item ("Rotten Apple",0,"Things can be seen moving under the surface of this putrid apple",2,0, Item.ItemType.Weapon));
    }
}

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Inventory : MonoBehaviour {
    public List<Item> inventory = new List<Item> ();
    public ItemDatabase database;
    // Use this for initialization
    void Start () {
        database = GameObject.FindGameObjectWithTag ("Item Database").GetComponent<ItemDatabase>();
        inventory.Add (database.items[0]);
        inventory.Add (database.items [1]);
            
    }
    
    void OnGUI ()
    {
        for (int i = 0; i < inventory.Count; i++)
        {
            GUI.Label (new Rect (10,i * 20, 200, 50), inventory[i].itemName);
        }
    }

}

如何将非行为脚本添加到脚本执行顺序中

非单行为脚本的执行顺序由您从单行为代码执行它们的顺序决定:(

Seialized字段在所有Awake((和Start((调用之前进行初始化。

似乎您只需要将ItemDatabase的执行时间设置为早于Inventory。数据库中包含的项目应该不少于您试图提取的项目。