我正在爲我的遊戲構建庫存系統,我覺得我很不確定Unity3D的繼承系統如何工作。我知道有很多庫存系統,但我想自己去學習。有關Unity3D繼承行爲的問題
基本上,我想有一個庫存基類,其中「PlayerInventory」,「ChestInventory」,「DrawerInventory」等可以從中派生。這似乎只是很好地工作:
Inventory.cs:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Inventory : MonoBehaviour {
public int numberOfSlots = 0;
public List<Slot> slots = new List<Slot>();
public virtual void Awake() {
Debug.Log ("Inventory.Awake() - numberOfSlots = " + numberOfSlots);
for (int i = 0; i < numberOfSlots; i++) {
slots.Add(new Slot());
}
Debug.Log ("Successfully created " + slots.Count + " slots!");
}
}
PlayerInventory.cs:
using UnityEngine;
using System.Collections;
public class PlayerInventory : Inventory {
public new void Awake() {
this.numberOfSlots = 30;
base.Awake();
Debug.Log ("PlayerInventory.Awake");
}
}
雖然這看起來工作得很好,我覺得有點凌亂。問題:
- 我可以(還是應該)在派生類中的Awake()之外定義numberOfSlots?
- 我可以(或應該)避免在派生的Awake()方法中調用base.Awake()嗎?
- 還有什麼我顯然做錯了? :)
感謝您的任何見解!
我會保持清醒()現在,因爲它沒有任何意義創建/清醒清單對象沒有任何縫隙,所以我覺得在創建/喚醒時創建插槽是有意義的。如果您不同意,請告訴我!我感謝你們所有的智慧! :) – toreau