从零开始的RPG制作7.2-(人物数据剥离,统一管理)

2019-05-07  本文已影响0人  小蜻蜓队长

在上一节中,我觉得数据还是有些零散,所以重新规划了一下。
我们新建一个专门属于小姐姐的数据类型的集合,将其命名为PlayerBaseData,我们在其中创建一个结构体数据类型。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//这里用于创建player对象的一些需要的类型。

public struct PlayerBaseData {
    float walkSpeed;
    public float WalkSpeed {
        get { return walkSpeed; }
    }
    float runSpeed;
    public float RunSpeed {
        get { return runSpeed; }
    }
    float jumpSpeed;
    public float JumpSpeed {
        get { return jumpSpeed; }
    }
    int hp_Max;
    public int HP_Max {
        get { return hp_Max; }
    }
    int hp;
    public int  HP {
        get { return hp; }
    }
    public PlayerBaseData(float walkSpeed, float runspeed, float jumSpeed, int Hp_MAX, int HP) {
        this.walkSpeed = walkSpeed;
        this.runSpeed = runspeed;
        this.jumpSpeed = jumSpeed;
        this.hp_Max = Hp_MAX;
        this.hp = HP;
    }
}

signal修改

public class PlayerBaseDataSignal : Signal<PlayerBaseData>
{//models向playerView发送基础数据。

}

在IPlayerModel进行修改

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public interface IPlayerModel {
    PlayerBaseData RequestGetPlayerModel();
    CallMadelPlyerBaseDataSignal callMadelPlyerBaseDataSignal { get; }
}

在PlayerModel中进行修改

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerModel:IPlayerModel {


    PlayerBaseData playerBaseData;

    [Inject]
    public CallMadelPlyerBaseDataSignal callMadelPlyerBaseDataSignal { get; set; }

    public PlayerModel() {
        playerBaseData = new PlayerBaseData(1, 3, 3.5f, 5, 5);
    }

    public PlayerBaseData RequestGetPlayerModel() {
        return playerBaseData;
    }

}

在PlayerCommand中进行修改。

    private void onComplete() {
        Debug.Log("获得通知,开始找寻model中的数据转发给playerBaseDataSignal监听");
      
        playerBaseDataSignal.Dispatch(model.RequestGetPlayerModel());
       // Release();
    }
}

在PlayerTestMediator进行修改:

    void setPlayerData(PlayerBaseData playerBD) {
        Debug.Log("接收到player基础数据");
        playerView.updateBaseData(playerBD);
    }

最后在PlayerTestView的修改

   PlayerBaseData playerBaseData;
    public void updateBaseData(PlayerBaseData PBD) {
        this.playerBaseData = PBD;
    }

最后在使用数据的地方通过这个结构体的数据进行修改。

上一节
下一节

上一篇下一篇

猜你喜欢

热点阅读