Unity中关于道具管理的一些小技巧

Unity中关于道具管理的一个设计模式

在游戏开发中遇到很多个道具需要统一管理的时候使用简单工厂+单例的方式实现,不多说,直接上代码

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

public class Prop:MonoBehaviour {
    //所有道具的基类
    private string name;
    private bool IsOwn;
    private int allNum;
    
    public virtual void Use() { }
    public virtual void Add() { }
    public virtual void Dele() { }
    public virtual int GetAllNum() { return allNum;}

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

public class PropMgr : MonoBehaviour {

    public static PropMgr instance;    //道具管理类的单例
    public Dictionary<string, Prop> OwnProp;  //道具字典,存储当前拥有的道具
    public Dictionary<string, Prop> AllProp;  // 所有道具

    private void Awake()
    {
        instance = this;
        AllProp = new Dictionary<string, Prop>();  //初始化字典
        OwnProp = new Dictionary<string, Prop>(); //初始化字典
    }

    public void Use(string propName) { }     //一些通用的方法,通过道具名,在字典中查询,然后使用
    public void Add(string propName) { }
    public void Dele(string propName) { }
    public void GetAllNum(string propName){ }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test1 : Prop {
    private string name = "Test1";
    private bool IsOwn = false;
    private int allNum = 0;
    
    private void Start()
    {
        PropMgr.instance.AllProp.Add(name, this); //将道具自加载到所有道具目录下
    }

    public override void Use() {
        Debug.Log("Test1 被使用.");
    }
    public override void Add() {

        Debug.Log("Test1 被添加.");
    }
    public override void Dele() {
        Debug.Log("Test1 被删除.");
    }

    public override int GetAllNum(){
        return allNum;
    }
}

思路就是创建一个所有道具的基类,继承自这个类的都是道具,在场景加载的时候,或者说道具被新建出来的时候,将其自加载到道具管理类的所有道具字典当中,要添加到角色拥有的道具时,将道具名传入相应的方法,然后用字典遍历的方式直接调用道具中方法。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值