连连看项目实战之三(解析配置表)

举报
爱上游戏开发 发表于 2022/07/01 23:33:49 2022/07/01
【摘要】 推荐阅读:  我的CSDN 我的博客园 QQ群:704621321        这...

推荐阅读:

       这是一款连连看,如果只能连连,那估计大家看看就没兴趣了。如果在里面加上一些场景式对话,那么可能就会有意思许多。

       今天就带大家学习Unity解析配置表,显示配置表信息,即对话文字。
用excel写好对话信息,如下:
在这里插入图片描述
       百度“Excel转txt”,将上卖弄的excel格式转换成txt类型文件,命名为dialog。

       下载LitJson.dll文件,在Unity项目Assets目录下创建Plugins文件夹,并将下载好的LitJson.dll文件并放入其中。新建Configs文件夹并将dialog.txt文件放入其中。

       在unity中新建场景,并搭建如下对话UI,保存并命名为DialogScene
在这里插入图片描述
新建C#脚本并命名为ParseConfigs,写下如下代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LitJson;
using System.IO;
using UnityEngine.UI;

public class ParseConfigs : MonoBehaviour {

    private Text dialogText;
    private JsonData jd;
    private int index=0;
    // Use this for initialization
    void Awak()
    {
        
    }
	void Start () {
        dialogText =GetComponent<Text>();
        StreamReader sr = File.OpenText("Assets/Resources/Configs/Dialog.txt");
        string strline = sr.ReadToEnd();
        jd = JsonMapper.ToObject(strline);//jd是一个数组数组中的每个元素是一个Object
        dialogText.text = (string)jd[index]["dialogText"];

    }

    // Update is called once per frame
    void Update () {

	}
    public void NextDialog()
    {
        index++;
        string ob = (string)jd[index]["ID"];//箱操作
        int id= int.Parse(ob);转换成int类型
        if (id > (GameManager.Instance.currDialog+1) * 1000)
        {
            //当前对话结束
            return;
        }
        else
        {
            dialogText.text = (string)jd[index]["dialogText"];
        } 
  	}
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46

       注意:上面代码中,jd是一个数组,数组中的每个元素都是一个object对象。取数组中的“ID”字段时,jd[index][“ID”]是一个引用类型,需要转换成值类型(用来判断当前对话是否应该结束),此处需要使用拆箱操作来转换成string类型,然后强制转换成int类型。

       上面的NextDialog()方法是点击事件需要调用的方法,我们设定点击对话文字,开始当前场景的下一对话,方法与文章连连看项目实战之一(搭建场景)中给按钮添加点击事件的方法相似。

       这里只实现了大致的方法,还有很多细节需要你慢慢优化,比如两人对话,一方说话时,另一方人物应该隐藏,隐藏方法为:setActive(false);同理显示方法为:setActive(true)。当前说话人物名字,都可以根据配置表取得。

文章来源: unity3d.blog.csdn.net,作者:爱上游戏开发,版权归原作者所有,如需转载,请联系作者。

原文链接:unity3d.blog.csdn.net/article/details/86672785

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。