Excel与Unity工作流(三):对话框架拓展:Excel表内变量导入 赋值 判断

本文介绍了如何在Excel中扩展功能,实现变量的导入、调用与赋值,使得非程序员也能配置对话流程,提升了对话系统的灵活性。详细讲解了变量类型、导入表格式、判定与赋值规则,以及与Unity对话框架的整合应用。
摘要由CSDN通过智能技术生成

前言

本文承接上篇
Excel与Unity工作流(二):基础对话框架

上篇中虽然可以在Excel中实现一部分的变量赋值与判断,但需要在代码中根据文本意义对应属性。本文将扩大Excel的功能,利用Excel直接实现变量导入、调用与赋值

又因为在Excel中实现了一个变量的导入、调用与赋值,所以可以实现一定程度上的无代码编程(让不懂编程的朋友也可以直接进行变量配置与判定赋值了)

变量表导入表示例

在这里插入图片描述

变量表在对话中的使用示例

在这里插入图片描述

整体框架与使用说明

  • 首先需要在变量表导入中填写需要使用的变量,并导入这个文件
  • 接着再根据变量表里面的名称写入对话表

变量的导入表

变量有三种类型,分别为"int",“float”,“string”,对应整数、小数和字符串
每一行可以导入多个变量,变量与变量之间用"&"进行分隔

导入对话文本

在"效果"列中使用

大致格式与上篇同

值的增加

格式为"类型@变量名+改变的值"
int与float类型都可以加负值
string类型的"+“标志在原有的字符串后加新的内容
“string@objName+5”:如果原本的objName变量值为"book”,那么更改后,它的值为"book5"

在这里插入图片描述

赋值

同时这里还定义了一个新的运算符"=“,可以直接进行赋值
格式为"类型@变量名=要赋的值”
举例:“string@objName=book1” “int@objNum=0”

在"判定"列中使用

大致格式与上篇同
格式为"类型@变量名>值"
int与float类型都可以与负值比较
string类型:“string@变量名>值"只有变量名的内容恰好等于值的内容才会跳转到第一个,否则就是第二个;
举例:判定列"string@objName>book”,跳转列"1&2" 只有objName为book时才会跳转1,不等于就跳转到2;注意 >符号后面是没有双引号的

在"内容"列中使用

要在内容中插入变量表的值,需要在变量外面增加一个"<>“来辅助替换
脚本会自动识别"内容"列中的变量名,并替换成他们的值显示出来
格式为”<类型@变量名>"

实现

变量导入表

导入

//读取Chat变量表
    void LoadChatValues()
    {
   
        textAsset = Resources.Load<TextAsset>(chatValuesPath);
        content = textAsset.text;
        //content = Encryption.Decrypt(content);
        dialogRows = content.Split('\n');
        cells = new string[dialogRows.Length][];
        for (int i = 0; i < dialogRows.Length; i++)
        {
   
            cells[i] = dialogRows[i].Split(',');
        }
        ChatValuesShow();
    }
    public void ChatValuesShow()
    {
   
        bool isValuesLoaded = false;
        bool isKeyLoaded = false;
        if (intValuesKey != null)
        {
   
            isKeyLoaded = true;
        }
        for (int i = 1; i < dialogRows.Length - 1; i++)
        {
   
            switch (cells[i][1])
            {
   
                case "int":
                    string[] s = cells[i][0].Split('&');
                    for (int j = 0; j < s.Length; j++)
                    {
   
                        if (!isValuesLoaded)
                        {
   
                            AddIntChatValues(s[j]);
                        }
                        else if (!isKeyLoaded)
                        {
   
                            AddIntChatValuesKey(s[j]);
                        }

                    }
                    break;
                case "float":
                    string[] s1 = cells[i][0].Split('&');
                    for (int j = 0; j < s1.Length; j++)
                    {
   
                        if (!isValuesLoaded)
                        {
   
                            AddFloatChatValues(s1[j]);
                        }
                        else if (!isKeyLoaded)
                        {
   
                            AddFloatChatValuesKey(s1[j]);
                        }
                    }
                    break;
                case "string":
                    string[] s2 = cells[i][0].Split('&');
                    for (int j = 0; j < s2.Length; j++)
                    {
   
                        if (!isValuesLoaded)
                        {
   
                            AddStringChatValues(s2[j]);
                        }
                        else if (!isKeyLoaded)
                        {
   
                            AddStringChatValuesKey(s2[j]);
                        }
                    }
                    break;
            }

        }
    }

存储 设置 获取

[Header("对话用到的变量表")]
    [SerializeField] List<int> intValues;
    [SerializeField] List<float> floatValues;
    [SerializeField] List<string> stringValues;
    List<string> intValuesKey;
    List<string> floatValuesKey;
    List<string> stringValuesKey;    
    
    public int GetIntValues(string key)
    {
   
        if 
  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值