5646人加入学习
(63人评价)
游戏公司CTO技术分享之《万能游戏框架》(试听课)
价格 ¥ 9.90
会员免费学 购买课程

优点

1耦合性较低

2可移植性高

缺点

1层级关系复杂

2学习比较难

 

[展开全文]

框架

/1.Unity官方的单例模式

缺点

1 可移植性差

2 层级关系复杂

3 每一个游戏框架都不一样,通用性差

/2.PURMVC

缺点

1封装层级很多(传输消息的时候,要遵循很多接口)

2关系比较复杂

3

[展开全文]

单例模式

UIManager: ScriptA,ScriptB

GameManager ScriptC*

UIMAnager.Instance,

缺点:

1.可移转性很差

2.层级关系复杂

3.每一个游戏   框架都不一样

PURMVC:

消息处理中心:

1.封装层级很多

2.关系比较复杂

 

[展开全文]

PURMVC 框架

缺点:

1.消息处理中心会发生堵塞

2.消息的继承类 非常复杂

 

消息处理中心分层分发消息。

 

 

UI 框架:

控件怎么管理?

答:1.分panel,一个pannel一个界面,每个panel都是一个管理中心

同一个界面,控件之间怎么通信?

答:

//避免使用find查找对象,消耗性能过高

GameObject UIManager.Instance.GetGameObject("loadOne");

注册式开发

模块之间怎么通信?

答:使用消息通信

干货:

using U3DEventFrame;

public class UIMsgEvent

{

public enum LoadEvent

{

    LoadOne = ManagerID.UIManager+1,

    LoadTwo,

    MaxValue   //表示当前界面最大消息id

}

public enum RegisEvent

{

   RegistOne = LoadEvent.MaxValue+1,

   RegistTwo,

  MaxValue    //表示当前界面最大消息id

}

}

 

 

ButtonClick脚本:

封装对象与Unity之间的事件注册

Panel脚本:

通过UIManager.Instance.GetGameObject()的方法查找到对象,调用ButtonClick中的注册方法即可,且ButtonClick脚本通用,重复利用率高。

 

模块之间通信:

using U3DEventFrame

public class RegisPanel:UIBase
{
    //该界面消息id数组
    private ushort[] msgIds;

    //接收到消息,处理消息
    public override void ProcessEvent(MsgBase msg)
    {
      
    }
    
    void Awake()
    {

       //定义感兴趣的消息列表
       msgIds = new ushort[] {
          (ushort)RegisEvent.RegisOne,
          (ushort)RegisEvent.RegisTwo
       }
       
       //注册消息
       RegistSelf(this,msgIds);
    }
    
    //发送消息
}

 

 

 

 

[展开全文]

开闭原则:

   对拓展开放,对修改关闭。

1.多使用继承的方式去修改原有行为  而不应该直接修改

2.多用多态的形式去复用。

3.一个变量我们不要直接去修改,而应该用方法的形式去修改,使用get set 方法封装使用。

原因:变量修改公式发生变化的话,引用到变量的地方都需要去更改。

 

单一原则:

    只有一个引起变化的原因,过多职责耦合性变差

例子:人物动作控制(动画,位移)

应用:控制和动画分开。

接口单一原则:

    使得接口方法不浪费。

例子:鸟(飞,一般不会说话),特殊鸟(鹦鹉,会说话)

应用:飞和说话使用独立的接口

 

迪米特原则(最小知识原则 ):

    一个模块尽量少与其他模块发生作用。

例子:人物攻击和怪物攻击,都掉血。

应用:中介类传递。

 

合成复用原则:

    一个模块或者对象尽量少与其他实体发生相互作用。

例子:人的身份有,经理,学生,会计。身份的组合。

应用: 抽象一个角色类出来。  分清楚has-a 关系  和 is-a 关系。

 

总结:

1.对于类 我们多使用继承修改;

2.对于方法使用多态,重写方式修改;

3.对于变量 我们多使用方法而不是直接修改;

4.命名规范:Class 都是首字母大写,变量首字母小写,匈牙利命名。

 

 

[展开全文]

python 可以写一些小工具代替手动麻烦的重复操作

比如 批量重命名  批量解包

[展开全文]

将要学习的框架:参考中国移动,打电话,发短信模式

1.服务器(消息处理中心)

2.每个基站(每个模块管理)

3.每个手机(每个单独脚本)

 

 

优点:

1.条理清楚 代码组织明确

2.移植性高  代码利用率高

3.程序交流 方便

4.资源和程序分开,易管理

5.同时结合ulua模块

6.代码层级简洁

 

使用框架方法

1.引入U3DEventFrame框架命名空间, 脚本继承UIBase。

2.定义消息ID,注册消息id数组

3.重写消息处理函数

4.发送消息处理

[展开全文]

PURMVC框架

优点:

1.代码耦合性变弱

2.容易移植

缺点:

1.发送消息必须遵守相应的协议,层级关系复杂

2.框架复杂,上手比较慢

 

 

[展开全文]

1 Unity3d 单例模式优缺点:

优点:

模块明确,便于开发。

缺点:

1.可移植性很差。

2.层级关系复杂。

3.每一个游戏,框架都不同。

 

2.PurMVC 框架 优缺点:

缺点:

1.封装层级很多。接口定义多

2.关系比较复杂

 

 

[展开全文]

开闭原则:

1. 多用继承

2. 多用多态

3. 变量用方法

单一原则:

1. 接口单一

[展开全文]