经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 游戏设计 » 查看文章
Unity进阶之:MVC编程思想
来源:cnblogs  作者:优梦创客  时间:2019/8/15 11:42:15  对本文有异议

版权声明:

  • 本文原创发布于博客园"优梦创客"的博客空间(网址:http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客"
  • 您可以自由转载,但必须加入完整的版权声明!

MVC

游戏初始化

在unity-start场景中,为了给整个游戏做初始化,需要创建一个空对象
空对象绑定一个脚本,这个脚本
MainInitialicer : MonoBehavior 继承自MonoBehavior
首先创建一个PlayerController Controller的对象
然后定义一个方法

  1. void start()
  2. {
  3. 控制器初始化
  4. Controller = new PlayerController();
  5. 调用显示视图界面方法
  6. Controller.ShowView
  7. }

MVC实际操作

创建一个panel,panel下创建一个button设置名称为攻击,调整为best fit
Mainpanel下增加一个text控件输入EXP best fit
创建一个my文件夹,里面有Scenes script
Script里面有application应用程序 framework框架 文件夹
Framework里面写的是MVC的框架
需要有几个脚本:
modelbase模型层基类、
viewbase界面基类、
controllerbase控制层基类、
mvc外部类
通过facade类可以统一地访问到三个层的各个组件
MVC外部类,就是MVC的框架,对外操作简洁,内部类是看不到的
然后依次编写三个类的代码

controllerbase:

  1. public abstract class ControllerBase
  2. {
  3. // 执行命令(一段功能代码)
  4. public abstract void Execute(object param); // 对谁攻击,用什么技能攻击,技能的id
  5. // 执行一个功能
  6. }
  7. //public class AttackController : ControllerBase
  8. //{
  9. // public override void Execute()
  10. // {
  11. // throw new System.NotImplementedException();
  12. // }
  13. //}
  14. //var ac = new AttackController();
  15. //ac.Execute()

viewbase:

视图类:
1、每个从ViewBase继承的类都必须提供一个名字 每个视图都有自己的名字
2、每个从ViewBase继承的类都必须注册自己关心的事件 "AttackEvent" 比如对经验值增加感兴趣
3、每个从ViewBase继承的类都需要处理自己关心的事件 “attackevent”

  1. public abstract class ViewBase : MonoBehaviour
  2. {
  3. public IList interestedEvents; // 保存关心的事件列表
  4. public abstract string Name { get; }
  5. // 每个view的名字,把取得name的方法交给子类做
  6. // 属性的方法抽象就不用实现,不然get方法必须要实现,返回一个名字
  7. // Get {return name;}
  8. public abstract IList GetInterestedEvents();
  9. // 方法:返回一个我关心的事件
  10. public abstract void HandleEvents(string eventName, object eventParam);
  11. // 处理自己关心的事件,关心的事件名(攻击),事件的信息(攻击造成的伤害值)
  12. }

View 注册到MVC类,然后每当数据发生变化,通知界面更新时,会受到MVC类发过来的一个消息,就是所关心的事件

modelbase:

  1. /// <summary>
  2. /// 数据模型,每个模型必须有一个名称
  3. /// </summary>
  4. public abstract class ModelBase {
  5. public abstract string Name { get; }
  6. // 背包数据有背包模型,副本数据有副本模型,这是他们的名字
  7. }

原文链接:http://www.cnblogs.com/raymondking123/p/11355911.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号