如何将非行为脚本添加到脚本执行顺序中
本文关键字:脚本 添加 顺序 执行 | 更新日期: 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。数据库中包含的项目应该不少于您试图提取的项目。