1、打开Unity,新建一个空工程,具体如下图
2、在工程中,新建几个脚本,然后双击打开,具体如下图
3、脚本的具体代码和代码说明如下图
4、CashSuperStrategy 脚本具体内容如下:publicabstractclassCashSuperStrategy{publicabstractvoidacceptCash(doublemoney);}
5、CashNormalConcreteStrategy脚本具体内容如下:usingUnityEngine;publicclassCashNormalConcreteStrategy:CashSuperStrategy{publicoverridevoidacceptCash(doublemoney) { Debug.Log("正常收费:"+money); }}
6、CashRebateConcreteStrategy脚本具体内容如下:usingUnityEngine;publicclassCash伊怕锱鳏RebateConcreteStrategy:CashSuperStrategy{privatedoublemoneyRebate=1.0d;publicCashRebateConcreteStrategy(doublerebate){moneyRebate=rebate; }publicoverridevoidacceptCash(doublemoney) { money*=moneyRebate; Debug.Log("打折收费:"+money); }}
7、CashReturnConcreteStrategy脚本具体内容如下:usingSystem;usingUnityEngine;pub造婷用痃licclassCashReturnConcreteStrategy:CashSuperStrategy{privatedoublemoneyCondition=0; privatedoublemoneyReturn=0;publicCashReturnConcreteStrategy(doublemoneyCondtion,doublemoneyReturn){this.moneyCondition=moneyCondtion; this.moneyReturn=moneyReturn; }publicoverridevoidacceptCash(doublemoney) { if(money>=moneyCondition){ money=money-Math.Floor(money/moneyCondition)*moneyReturn; }Debug.Log("正常收费:"+money); }}
8、CashContext脚本具体内容如下:publicclassCashContext{privateCashSuperStrate爿讥旌护gycashSuper;publicCashSuperStrategyCashSuper{ get{ returncashSuper; } set{ cashSuper=value; } }publicCashContext(CashSuperStrategycashSuper){ this.cashSuper=cashSuper; }publicvoidAcceptMoney(doublemoney){ cashSuper.acceptCash(money); }}
9、CashContext脚本具体内容如下:usingUnityEngine;publicclassTest:MonoBehaviour{pri即枢潋雳vateCashContextcash;//Usethisforinitialization voidStart(){cash=newCashContext(newCashNormalConcreteStrategy()); cash.AcceptMoney(358);cash.CashSuper=newCashRebateConcreteStrategy(0.9d); cash.AcceptMoney(358);cash.CashSuper=newCashReturnConcreteStrategy(300,100); cash.AcceptMoney(358); }}
10、脚本编译正确,回到Unity界面,在场景中新建一个 GameObject,并把 Test 脚本赋给 GameObject,具体如下图
11、运行场景,控制台 Console 打印如下图
12、到此,《Unity 设计模式之 策略模式的实例介绍》讲解结束,谢谢