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谢谢大卫,我是这样解决的。 –