标签:func hide span fir engine vat comm oid interface
https://github.com/PacktPublishing/Hands-On-Game-Development-Patterns-with-Unity-2018
2. Game Loop and Update Method
1. Unity Engine Architecture
2. Game Loop and Update Method
3. Prototype
public interface iCopyable { iCopyalbe Copy(); } public class Enemy: MonoBehaviour, iCopyable { public iCopyable Copy() { return Instantiate(this); } } public class Sniper: Enemy { public void Shoot() { // Implement shooting functionality } } public class Drone: Enemy { public void Fly() { // Implement flying functionality } public void Fire() { // Implement laser fire functionality. } } public class EnemySpawner: MonoBehaviour { public iCopyable m_Copy; public Enmey SpawnEnemy(Enemy prototype) { m_Copy = prototype.Copy(); return (Enemy)m_Copy; } } public class Client: MonoBehaviour { public Drone m_Drone; public Sniper m_Sniper; public EnemySpawner m_Spawner; private Enemy m_Spawn; private int m_IncrementorDrone = 0; private int m_IncrementorSniper = 0; public void Update() { if (Input.GetKeyDown(KeyCode.D)) { m_Spawn = m_Spawner.SpawnEnemy(m_Drone); m_Spawn.name = "Drone_Clone_" + ++m_IncrementorDrone; } if (Input.GetKeyDown(KeyCode.S)) { m_Spawn = m_Spawner.SpawnEnemy(m_Sniper); m_Spawn.name = "Sniper_Clone_" + ++m_IncrementorSniper; } } }
4. The Factory Method
public enum NPCType { Farmer, Beggar, Shopowner } public interface INPC { void Speak(); } public class Farmer: INPC { public void Speak() { Debug.Log("Farmer: You reap what you sow!"); } } public class Beggar: INPC { public void Speak() { Debug.Log("Beggar: Do you have some change to spare?"); } } public class Shopowner: INPC { public void Speak() { Debug.Log("Shopowner: Do you wish to purchase something"); } } public class NPCFactory: MonoBehaviour { public INPC GetNPC(NPCType type) { switch (type) { case NPCType.Beggar: INPC beggar = new Beggar(); return beggar; case NPCType.Farmer: INPC farmer = new Farmer(); return farmer; case NPCType.Shopowner: INPC shopowner = new Shopowner(); return shopowner; } return null; } } public class NPCSpanwer: MonoBehaviour { public NPCFactory m_Factory; private INPC m_Farmer; private INPC m_Beggar; private INPC m_Shopowner; public void SpawnVillagers() { m_Beggar = m_Factory.GetNPC(NPCType.Beggar); m_Farmer = m_Factory.GetNPC(NPCType.Farmer); m_Shopowner = m_Factory.GetNPC(NPCType.Shopowner); m_Beggar.Speak(); m_Farmer.Speak(); m_Shopowner.Speak(); } } public class Client: MonoBehaviour { public NPCSpanwer m_SpawnerNPC; public void Update() { if (Input.GetKeyDown(KeyCode.S)) { m_SpawnerNPC.SpawnVillagers(); } } }
5. Abstract Factory
6. Singleton
7. Strategy
8. Command
9. Observer
10. State
11. Visitor
12. Facade
13. Adapter
14. Decorator
15. Event Bus
16. Service Locator
17. Dependency Injection
18. Object Pool
19. Spatial Partition
20. The Anti-Patterns
Hands On Game Development Patterns with Unity 2019
标签:func hide span fir engine vat comm oid interface
原文地址:https://www.cnblogs.com/revoid/p/11153042.html