Unity进阶之:MVC编程思想
版权声明:
- 本文原创发布于博客园"优梦创客"的博客空间(网址:
http://www.cnblogs.com/raymondking123/)以及微信公众号"优梦创客" - 您可以自由转载,但必须加入完整的版权声明!
 
MVC
游戏初始化
在unity-start场景中,为了给整个游戏做初始化,需要创建一个空对象
空对象绑定一个脚本,这个脚本
MainInitialicer : MonoBehavior 继承自MonoBehavior
首先创建一个PlayerController Controller的对象
然后定义一个方法
void start()
{
     控制器初始化
     Controller = new PlayerController();
     调用显示视图界面方法
     Controller.ShowView
}
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:
public abstract class ControllerBase
{
// 执行命令(一段功能代码)
	public abstract void Execute(object param); // 对谁攻击,用什么技能攻击,技能的id
// 执行一个功能
}
//public class AttackController : ControllerBase
//{
//	public override void Execute()
//	{
//		throw new System.NotImplementedException();
//	}
//}
//var ac = new AttackController();
//ac.Execute()
viewbase:
视图类:
1、每个从ViewBase继承的类都必须提供一个名字 每个视图都有自己的名字
2、每个从ViewBase继承的类都必须注册自己关心的事件 "AttackEvent" 比如对经验值增加感兴趣
3、每个从ViewBase继承的类都需要处理自己关心的事件 “attackevent”
public abstract class ViewBase : MonoBehaviour
{
	public IList interestedEvents; // 保存关心的事件列表
	public abstract string Name { get; }
// 每个view的名字,把取得name的方法交给子类做
// 属性的方法抽象就不用实现,不然get方法必须要实现,返回一个名字
// Get {return name;}
	public abstract IList GetInterestedEvents();
// 方法:返回一个我关心的事件
	public abstract void HandleEvents(string eventName, object eventParam);
// 处理自己关心的事件,关心的事件名(攻击),事件的信息(攻击造成的伤害值)
}
View 注册到MVC类,然后每当数据发生变化,通知界面更新时,会受到MVC类发过来的一个消息,就是所关心的事件
modelbase:
/// <summary>
/// 数据模型,每个模型必须有一个名称
/// </summary>
public abstract class ModelBase {
	public abstract string Name { get; }
// 背包数据有背包模型,副本数据有副本模型,这是他们的名字
}
												
											Unity进阶之:MVC编程思想的更多相关文章
- javaWeb中MVC的编程思想示例
		
没有学习MVC之前我只写了一个Servlet类(Note_List.java),分层之后,我将这个类分成了5个类(NoteDao.java,,NoteDaoImpl.java,,NoteService ...
 - MVC三层架构模式编程思想 JSP-Servlet-JavaBean
		
MVC(Mdodel-View-Controller)编程模式.把一个Java应用分成三层:模型层.视图层.控制层,各层分别实现各层的功能,整个过程见下图就一目了然了. watermark/2/tex ...
 - Unity 背包系统的完整实现(基于MVC框架思想)
		
前言: 项目源码上传GitHub:Unity-knapsack 背包系统: 背包系统是游戏中非常重要的元素,几乎每一款游戏都有背包系统,我们使用背包系统可以完成装备栏的数据管理,商店物体的数据管理等等 ...
 - U3D 飞机大战(MVC模式)解析--面向对象编程思想
		
在自己研究U3D游戏的时候,看过一些人的简单的游戏开发视频,写的不错,只是个人是java web 开发的人,所以结合着MVC思想,对游戏开发进行了一番考虑. 如果能把游戏更加的思想化,分工化,开发便明 ...
 - Unity进阶之ET网络游戏开发框架 01-下载、运行
		
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
 - 淡扯javascript编程思想
		
一.面向对象-OOD 虽然js面向对象的编程思想已经老话常谈了,但了为了文章的完整性,我还是把它加了进来,尽量以不太一样的方式讲述(虽然也没什么卵不一样的). 1.面向对象,首先得有类的概念,没有 ...
 - Java编程思想(11~17)
		
[注:此博客旨在从<Java编程思想>这本书的目录结构上来检验自己的Java基础知识,只为笔记之用] 第十一章 持有对象 11.1 泛型和类型安全的容器>eg: List<St ...
 - C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想
		
如果你接触过<设计模式>.软件架构的编程思想,就会知道优秀的设计准则:“组合优于继承的”. 这句话很简短,但开始学习OOP的时候,真切的是—-不太好理解(以我个人当初学习为例). OOP的 ...
 - Python进阶:函数式编程实例(附代码)
		
Python进阶:函数式编程实例(附代码) 上篇文章"几个小例子告诉你, 一行Python代码能干哪些事 -- 知乎专栏"中用到了一些列表解析.生成器.map.filter.lam ...
 
随机推荐
- WeQuant教程—1.4 实践教学:比特币量化定投
			
在wequant.io,为了让读者能直接体验量化系统的魅力,我们用前面的思路,实现了一套完整的量化系统和回测工具,这个系统非常简单,用户只需要把交易意志用策略表达出来,系统就可以自己完成交易效果的回 ...
 - DNS与ARP协议
			
DNS(domain name system) DNS的作用:将域名(如baidu.com)转换为IP地址 DNS的本质是:分层的DNS服务器实现的分布式数据库: 根DNS服务器 - com DNS服 ...
 - 【计算机视觉基础】IPM
			
IPM code #if 0 void xyp2ipmp(cv::Mat& xyp, cv::Mat& ipmp, cv::Mat& xylim, Size& sz){ ...
 - 通过Fastdfs进行文件上传服务(文件和图片的统一处理)
			
1.文件上传简单流程分析图: 2.Fastdfs介绍: Fastdfs由两个角色组成: Tracker(集群):调度(帮你找到有空闲的Storage) Storage(集群):文件存储(帮你保存文件或 ...
 - c++11多线程记录4:死锁
			
简单示例 举个例子,桌上有一支笔和一张纸,小A和小B都要拿到纸笔写字 小A拿了笔,小B拿了纸,这时就形成了死锁(两人都不愿意让出纸笔). 其实只要稍加控制就可以避免这种情况:规定必须先拿到纸再能去尝试 ...
 - yum命令安装jdk
			
1.查看是否已安装JDK,卸载 yum list installed |grep java java--openjdk.x86_64 :.b13.el7_5 @updates java--openjd ...
 - 解决打开IE报错“无法启动...丢失api-ms-win-core-path-l1-1-0.dll”的问题
			
打开IE突然发现报错 试了各种方法都不行 最终看这篇文章,才解决:https://www.yijile.com/log/577.html 打开IE设置选项,选择管理加载项,如图讲该选项禁用,就不报错. ...
 - c#mysql数据库备份还原
			
1:引用dll MySql.Data.dll, MySqlbackup.dll 2:建一个数据连接静态类 public static class mysql { public static str ...
 - 批量关联update
			
UPDATE A SET A.field = B.field from table A inner join table B ON A.field = b.field
 - 16 doc values 【正排索引】
			
搜索的时候,要依靠倒排索引:排序的时候,需要依靠正排索引,看到每个document的每个field,然后进行排序,所谓的正排索引,其实就是doc values 在建立索引的时候,一方面会建立倒排索引, ...