2
我正在Unity中開發我的第一款遊戲,並且我嘗試應用Abstract Factory
模式創建遊戲的怪物。我有一個接口,所有的怪物應該實現:嘗試實現抽象工廠時,對象引用未設置爲對象
interface IMonster
{
void setSpeed(float s);
float getSpeed();
void SetMonsterPosition(Vector2 pos);
Vector2 GetMonsterPosition();
void DestroyMonster();
void MoveMonster();
}
我有一個具體的怪物
public class Monster2 : MonoBehaviour, IMonster
{
....
public Monster2()
{
speed = Random.Range(0.05f, 0.15f);
monster = (GameObject)Instantiate(Resources.Load("Monster2"));
float height = Random.Range(0, Screen.height);
Vector2 MonsterStartingPosition = new Vector2(Screen.width, height);
MonsterStartingPosition = Camera.main.ScreenToWorldPoint(MonsterStartingPosition);
monster.transform.position = MonsterStartingPosition;
}
....
}
我想創建一個具有它返回一個新的怪物對象,所以我會的方法的工廠類隨後可以隨機創建具體的怪物對象。我寫道:
class MonsterFactory
{
public IMonster getMonster()
{
return new Monster2();
}
}
,我試圖用這個廠在我的主要是這樣的:
private IMonster monster;
private MonsterFactory myMonsterFactory;
void Start() {
monster = myMonsterFactory.getMonster();
}
當我試圖運行遊戲,我得到以下錯誤NullReferenceException: Object reference not set to an instance of an object
任何想法我做錯了?
'myMonsterFactory'爲空? –
你應該聲明你的MonsterFactory和getMonster方法是靜態的。 –
@DavidBrabant謝謝大衛,我是這樣解決的。 –