本文共 2038 字,大约阅读时间需要 6 分钟。
摘录自:设计模式与游戏完美开发
十年磨一剑,作者将设计模式理论巧妙地融入到实践中,以一个游戏的完整实现呈现设计模式的应用及经验的传承 《轩辕剑》之父——蔡明宏、资深游戏制作人——李佳泽、Product Evangelist at Unity Technologies——Kelvin Lo、信仁软件设计创办人—— 赖信仁、资深3D游戏美术——刘明恺 联合推荐全书采用了整合式的项目教学,即以一个游戏的范例来应用23种设计模式的实现贯穿全书,让读者学习到整个游戏开发的全过程和作者想要传承的经验,并以浅显易懂的比喻来解析难以理解的设计模式,让想深入了解此领域的读者更加容易上手。
using UnityEngine;using System.Collections;namespace DesignPattern_Strategy{ // 擁有Strategy物件的客戶端 public class Context { Strategy m_Strategy = null; // 設定演算法 public void SetStrategy(Strategy theStrategy) { m_Strategy = theStrategy; } // 執行目前的演算法 public void ContextInterface() { m_Strategy.AlgorithmInterface(); } } // 演算法的共用介面, Context透過此介面呼叫 ConcreteStrategy所實作的演算法 public abstract class Strategy { public abstract void AlgorithmInterface(); } // 演算法A public class ConcreteStrategyA : Strategy { public override void AlgorithmInterface() { Debug.Log("ConcreteStrategyA.AlgorithmInterface"); } } // 演算法B public class ConcreteStrategyB : Strategy { public override void AlgorithmInterface() { Debug.Log("ConcreteStrategyB.AlgorithmInterface"); } } // 演算法C public class ConcreteStrategyC : Strategy { public override void AlgorithmInterface() { Debug.Log("ConcreteStrategyC.AlgorithmInterface"); } }}
using UnityEngine;using System.Collections;using DesignPattern_Strategy;public class StrategyTest : MonoBehaviour{ // Use this for initialization void Start() { UnitTest(); } // Update is called once per frame void UnitTest() { Context theContext = new Context(); // 設定演算法 theContext.SetStrategy(new ConcreteStrategyA()); theContext.ContextInterface(); theContext.SetStrategy(new ConcreteStrategyB()); theContext.ContextInterface(); theContext.SetStrategy(new ConcreteStrategyC()); theContext.ContextInterface(); }}
转载地址:http://voxto.baihongyu.com/