unity工厂模式完整版
时间: 2023-06-21 15:17:08 浏览: 43
完整版的Unity工厂模式可以包含以下几个方面的实现:
1. 工厂类:负责对象的创建和实例化。可以根据不同的需求,创建不同的类型的对象。
```csharp
public class ObjectFactory {
public GameObject CreateObject(string objectName) {
GameObject newObject = null;
switch (objectName) {
case "Player":
newObject = Resources.Load<GameObject>("Prefabs/Player");
break;
case "Enemy":
newObject = Resources.Load<GameObject>("Prefabs/Enemy");
break;
case "Item":
newObject = Resources.Load<GameObject>("Prefabs/Item");
break;
default:
Debug.LogError("Invalid object name.");
break;
}
return Object.Instantiate(newObject);
}
}
```
2. 对象类:需要被工厂创建的类。通常需要实现一个公共的接口或抽象类,以便工厂能够通过接口或抽象类来实例化对象。
```csharp
public interface IObject {
void Init();
}
public class Player : MonoBehaviour, IObject {
public void Init() {
Debug.Log("Player initialized.");
}
}
public class Enemy : MonoBehaviour, IObject {
public void Init() {
Debug.Log("Enemy initialized.");
}
}
public class Item : MonoBehaviour, IObject {
public void Init() {
Debug.Log("Item initialized.");
}
}
```
3. 调用工厂创建对象:在需要创建对象的地方调用工厂类的方法,传入需要创建的对象的名称或类型,即可创建对象实例。
```csharp
public class GameManager : MonoBehaviour {
private ObjectFactory factory;
private void Start() {
factory = new ObjectFactory();
CreateObject("Player");
CreateObject("Enemy");
CreateObject("Item");
}
private void CreateObject(string objectName) {
GameObject newObject = factory.CreateObject(objectName);
IObject obj = newObject.GetComponent<IObject>();
if (obj != null) {
obj.Init();
}
}
}
```
在上面的示例中,`GameManager`类通过调用`ObjectFactory`类的方法来创建对象实例,并将创建的对象传递给实现了`IObject`接口的类,以便进行初始化。这样可以保证在不同的场景中,不同的对象都能够被正确的创建和初始化。