关于UnityMVC框架的使用与搭建心得总结

**********************************Model数据管理***************************************************

using UnityEngine;
using System.Collections;


/// <summary>
/// 模型委托(当用户信息发生变化时执行)
/// </summary>
public delegate void OnValueChange (int val);


public class PlayerMsgModel
{
    //玩家等级
    private int playerLevel;
    //玩家经验
    private int playerExperience;
    //玩家升级经验
    private int playerFullExperience;
    //金币数量
    private int goldNum;
    //声明委托对象,接收当等级发生变化时,触发的事件
    public OnValueChange OnLevelChange;
    //声明委托对象,接收当经验发生变化时,触发的事件
    public OnValueChange OnExperienceChange;
    //声明委托对象,接收当升级经验发生变化时,触发的事件
    public OnValueChange OnFullExperienceChange;
    //声明委托对象,接收当金币数量发生变化时,触发的事件
    public OnValueChange OnGoldNumChange;


    //单例
    private static PlayerMsgModel mod;


    public static PlayerMsgModel GetMod ()
    {
        if (mod == null) {
            mod = new PlayerMsgModel ();
        }
        return mod;
    }


    private PlayerMsgModel ()
    {
    }


    /// <summary>
    /// 玩家等级属性
    /// </summary>
    /// <value>The player level.</value>
    public int PlayerLevel {
        get {
            return playerLevel;
        }
        set {
            playerLevel = value;
            //如果委托对象不为空
            if (OnLevelChange != null) {
                //执行委托
                OnLevelChange (playerLevel);
            }
        }
    }


    /// <summary>
    /// 玩家经验属性
    /// </summary>
    /// <value>The player experience.</value>
    public int PlayerExperience {
        get {
            return playerExperience;
        }
        set {
            playerExperience = value;
            if (OnExperienceChange != null) {
                OnExperienceChange (playerExperience);
            }
        }
    }


    /// <summary>
    /// 玩家升级经验属性
    /// </summary>
    /// <value>The player full experience.</value>
    public int PlayerFullExperience {
        get {
            return playerFullExperience;
        }
        set {
            playerFullExperience = value;
            if (OnFullExperienceChange != null) {
                OnFullExperienceChange (playerFullExperience);
            }
        }
    }


    /// <summary>
    /// 金币数量属性
    /// </summary>
    /// <value>The gold number.</value>
    public int GoldNum {
        get {
            return goldNum;
        }
        set {
            goldNum = value;
            if (OnGoldNumChange != null) {
                OnGoldNumChange (goldNum);
            }
        }
    }

}

**********************************View显示管理管理***************************************************

using UnityEngine;
using System.Collections;
using UnityEngine.UI;


public class PlayerMsgView : MonoBehaviour
{
    //UI
    public Text playerLevel;
    public Text playerExperience;
    public Text goldNum;
    public Button experienceUpButton;


    void Start ()
    {
        //委托事件绑定
        PlayerMsgModel.GetMod ().OnLevelChange += SetLevel;
        //委托事件绑定
        PlayerMsgModel.GetMod ().OnExperienceChange += SetExperience;


        PlayerMsgModel.GetMod ().OnFullExperienceChange += SetFullExperience;
        PlayerMsgModel.GetMod ().OnGoldNumChange += SetGoldNum;
        //View绑定按钮控制功能
        experienceUpButton.onClick.AddListener (
            PlayerMsgController.controller.OnExperienceUpButtonClick);
    }


    //修改UILevel值
    public void SetLevel (int level)
    {
        playerLevel.text = level.ToString ();
    }


    //修改UI经验值
    public void SetExperience (int experience)
    {
        //将字符串以“/”拆开
        string[] str = playerExperience.text.Split (new char []{ '/' });
        //用新的经验值重组
        playerExperience.text = experience + "/" + str [1];
    }


    public void SetFullExperience (int fullExiperience)
    {
        string[] str = playerExperience.text.Split (new char []{ '/' });


        playerExperience.text = str [0] + "/" + fullExiperience;
    }


    public void SetGoldNum (int goldn)
    {
        goldNum.text = goldn.ToString ();
    }


}

**********************************Controller控制代码管理***************************************************

using UnityEngine;
using System.Collections;


public class PlayerMsgController : MonoBehaviour
{
    public static PlayerMsgController controller;


    private int levelUpValue = 20;


    void Awake ()
    {
        controller = this;
    }


    void Start ()
    {
        PlayerMsgModel.GetMod ().PlayerLevel = 1;
        PlayerMsgModel.GetMod ().PlayerExperience = 0;
        PlayerMsgModel.GetMod ().PlayerFullExperience = 100;
        PlayerMsgModel.GetMod ().GoldNum = 0;
    }


    /// <summary>
    /// 提升经验按钮点击事件
    /// </summary>
    public void OnExperienceUpButtonClick ()
    {
        PlayerMsgModel.GetMod ().PlayerExperience += levelUpValue;
        if (PlayerMsgModel.GetMod ().PlayerExperience
            >= PlayerMsgModel.GetMod ().PlayerFullExperience) {
            PlayerMsgModel.GetMod ().PlayerLevel += 1;
            PlayerMsgModel.GetMod ().PlayerFullExperience +=
                200 * PlayerMsgModel.GetMod ().PlayerLevel;
            levelUpValue += 20;
            if (PlayerMsgModel.GetMod ().PlayerLevel % 3 == 0) {
                PlayerMsgModel.GetMod ().GoldNum +=
                    100 * PlayerMsgModel.GetMod ().PlayerLevel;
            }
        }
    }
}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W低小调W

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值