战斗卡牌系列教程 底层框架 API接口 说明
目录索引
常用API
LogicMgr.GetInstance().GetLogic<LogicTips>().AddTips("请输入昵称"); //添加tips弹框 LogicMgr.GetInstance().GetLogic<T>();//获取逻辑类 T为继承LogicBase的逻辑类 产考 LogicTips SceneMgr.GetInstance().SwitchingScene(SceneType.SceneCreateRote);//场景跳转 PanelMgr.GetInstance().ShowPanel(PanelName.PanelTest);//弹出Tips框 ResourceMgr.GetInstance().CreateGameObject("Game/Login/SceneLogin", true);//创建res对象。创建为gameobject。一般用于预设 ResourceMgr.GetInstance().Load<GameObject>("Game/Login/SceneLogin", true);//加载T类型资源。可以加载动画剪辑,预设,材质等等。。 T为要加载成的资源类型 ModelMgr.GetInstance().GetModel<UserModel>();//获取数据模型 //待加+++
常用继承重写函数
Scene
public class SceneCreateRote : SceneBase { #region 界面加载相关 protected override void OnInitFront() { base.OnInitFront(); _type = SceneType.SceneLogin; } protected override void OnInitSkinFront() { base.OnInitSkinFront(); SetMainSkinPath("Game/Login/SceneCreateRote"); } protected override void OnInitDone() { base.OnInitDone(); } protected override void OnDestroyDone() { base.OnDestroyDone(); } protected override void OnDestroyFront() { base.OnDestroyFront(); } protected override void OnClick(GameObject target) { base.OnClick(target); } public override void OnInit(params object[] sceneArgs) { base.OnInit(sceneArgs); } public override void OnShowed() { base.OnShowed(); } #endregion }
Panel
public class PanelTest : PanelBase { #region 界面加载相关 protected override void OnInitFront() { base.OnInitFront(); _type = PanelName.PanelTest; } protected override void OnInitSkinFront() { base.OnInitSkinFront(); SetMainSkinPath("Game/Test/PanelTest"); } protected override void OnInitDone() { base.OnInitDone(); //InitData(); } protected override void OnDestroyDone() { base.OnDestroyDone(); } protected override void OnDestroyFront() { base.OnDestroyFront(); } protected override void OnClick(GameObject target) { base.OnClick(target); Close(); //ButtonClick(target); } public override void OnInit(params object[] sceneArgs) { base.OnInit(sceneArgs); } public override void OnShowed() { base.OnShowed(); } #endregion }
Panel初始化参数设置
protected override void OnInitFront() { base.OnInitFront(); _type = PanelName.PanelTest;//面板名称 _openDuration = 0.2f;//面板打开时间 _maskStyle = PanelMgr.PanelMaskSytle.Alpha;//面板打开遮罩类型 _showStyle = PanelMgr.PanelShowStyle.CenterScaleBigNomal;//面板打开方式 }
遮罩类型介绍
/// <summary> /// 面板遮罩 /// </summary> public enum PanelMaskSytle { /// <summary> /// 无背景 /// </summary> None, /// <summary> /// 半透明背景 /// </summary> BlackAlpha, /// <summary> /// 无背景.但有BOX关闭组件 /// </summary> Alpha, }
打开方式介绍
/// <summary> /// 面板显示方式 /// </summary> public enum PanelShowStyle { /// <summary> /// //正常出现-- /// </summary> Nomal, /// <summary> /// //中间变大-- /// </summary> CenterScaleBigNomal, /// <summary> /// //上往中滑动-- /// </summary> UpToSlide, /// <summary> /// //下往中滑动 /// </summary> DownToSlide, /// <summary> /// //左往中-- /// </summary> LeftToSlide, /// <summary> /// //右往中-- /// </summary> RightToSlide, }
Model相关
mdoel定义产考
using UnityEngine; using System.Collections; public class UserModel : BaseModel { /// <summary> 玩家昵称 </summary> public string name { set; get; } /// <summary> 玩家性别 </summary> public int sex { get; set; } #region 金币 private int mGold; /// <summary> 玩家金币 </summary> public int gold { get { return mGold; } set { if(mGold == value) { return; } if(value <= 0) { mGold = 0; } ValueUpdateEventArgs ve = new ValueUpdateEventArgs(); ve.key = "gold"; ve.oldValue = mGold; ve.newValue = value; mGold = value; DispatchValueUpdateEvent(ve); } } #endregion }
事件监听相关
属性事件
主要用于一般属性的变更。如。金币元宝体力等。在相应的界面。监听属性界面。及可以在服务器下发金币变更信息时。通知相应的界面金币发生了改变。界面就可以修改新的金币值。
ValueUpdateEventArgs ve = new ValueUpdateEventArgs(); ve.key = "gold"; ve.oldValue = mGold; ve.newValue = value; mGold = value; DispatchValueUpdateEvent(ve);
如上。在model定义属性事件。key为监听时判断字符。
监听接口。以UserModel为例。
先注册监听。如下
mUserModel = ModelMgr.GetInstance().GetModel<UserModel>(); mUserModel.ValueUpdateEvent += OnValueUpdateEventArgs;
监听回调函数示例(newValue为改变后的值,oldValue为改变前的值)
void OnValueUpdateEventArgs(object obj, ValueUpdateEventArgs v) { switch(v.key) { case "gold": ChangeGold((int)v.newValue, (int)v.oldValue); break; } }
最后。在界面关闭时(Destroy函数里)。不要忘记取消注册监听及把数据模型设为null
mUserModel.ValueUpdateEvent -= OnValueUpdateEventArgs; mUserModel = null;
模型事件
主要用于。比如服务器下发仓库道具变更。这时我们就可以通过模型事件通知Scene或者Panel刷新我们的列表。
以仓库为例。
定义事件如下:
DispatchModelEvent("AddProp", params object[] args);
如上。参数args为可变参数数组。不限长度和类型。使用时将object强转为原本参数类型即可。
注册事件
ModelMgr.GetInstance().GetModel<WarehouseModel>().ModelEvent += UpDateProp;
监听如下
public void UpDateProp(object sender, ModelEventArgs args) { switch (args.type) { case "AddProp": PropModel pm = (PropModel)args.args[0]; if (pm.id == mRecId) { Close(); } break; } }
支持。