Unity 实现任务系统 TaskSystem

本帖最后由 martin4500 于 2018-5-9 09:57 编辑

这段时间比较闲,所以抽时间写了游戏中常见的系统,任务系统,可以接受任务啊,然后通过刷怪等条件去触发任务条件,直到完成任务。
这个系统相对来说比较的简单,可以满足小型的游戏任务系统的基本要求吧!这里面的任务的描述是通过读取Json数据来获取的,当然你也可以去写Excel和XML格式的。序列化Json数据不是用的Unity自带的 JsonUtility.FromJson函数,因为有个更强大的Json解析插件Json .Net for Unity2.0 ,直接支持对Dictionary类型的支持,这样省事多了,可以在AssetStore直接下载。下面是效果展示:   废话不多说了上代码:
using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using Newtonsoft.Json;

    public class DataManager : MonoSingletions<DataManager>
    {
        private Dictionary<string, Task> taskAllDic = new Dictionary<string, Task>();

        private TextAsset mTextAsset;

        private void Awake()

        {

            if (mTextAsset == null)
            {
                mTextAsset = Resources.Load("Txt/Task", typeof(TextAsset)) as TextAsset;
            }
             taskAllDic = JsonConvert.DeserializeObject<Dictionary<string, Task>>(mTextAsset.text);

           // taskAllDic = UnityEngine.JsonUtility.FromJson <Dictionary<string, Task>> (mTextAsset.text);
            foreach (var item in taskAllDic)
            {
                string tempName=item.Value.taskName;
                Debug.Log(tempName);
            }
        }

        public Task GetTaskByID(string Id)

        {
            Task value;
            if (taskAllDic.TryGetValue(Id, out value)) return value;

            else Debug.LogError("不存在这个字典");
            return null;
    }
}

这个类主要是来读取Json文本解析数据,也不需要多去解释了 MonoSingletions 是Mono的单例

public class Task
    {
        public string taskID;
        public string taskName;
        public string description;
        public List<TaskConditions> taskConditions = new List<TaskConditions>();
        public TaskRewards[] taskRewards = new TaskRewards[2];//最好是用数组比链表要节省空间
        public Task(string _taskId,string _taskName,string _descrip
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值