战斗卡牌系列教程 底层框架 API接口 说明

1

目录索引

常用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;
	}
}

 

 

本文链接:

https://www.bobsong.net/910.html
1 + 2 =
1 评论
    2015年06月22日 回复

    支持。