unity 中excel转json插件

这篇具有很好参考价值的文章主要介绍了unity 中excel转json插件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 工具简介

将策划配置的excel转换成程序使用json文件。方便策划是excel的功能。

2文件的放置和生成

需要将excle文件放置到项目中的Excel文件夹下面。

unity 中excel转json插件

生成的文件会在Res/Config文件夹下面

unity 中excel转json插件

生成json文件只需要点击Tools下的ExcelTools就可以了

unity 中excel转json插件

3 excel文件的格式

unity 中excel转json插件

第一行是说明,不具有实际意义

第二行为属性的名字,json文件的key值。不能使用数字开头,特殊符号开头,不能使用程序内的关键字,如:string,int。

第三行是程序内使用的类型,支持的类型有 string  int  float  double  bool。

bool中fasle,0,空白 都代表否的意思,填写其他值代表为真

生成的接json文件的名字是以表命中(#文件名#) #号包裹的名字位主的,如果表名不存在#号,则该表不导出。示例如下图:

unity 中excel转json插件

unity 中excel转json插件

4 注意事项

1. excel文件名中不能存在空格或特殊符号

2. excel后缀只支持xlsx,并且需要确保后缀小写,不能使用大写

3. 导出的文件名确定后不要轻易修改,修改需要和程序确认(#文件名#)

4. 添加。删除。修改字段时,请和程序确定,防止游戏内逻辑出错

5. json中需要转换的数据结构由程序自行创建

6. 每次生成会清理config文件,重新从excel生成json文件。请不要手动修改生成后的json文件。确保excel文件的正确定。不要config文件夹下面放置其他文件

7. 使用工具的时候需要关闭excel文件

using UnityEngine;
using System.IO;
using System.Linq;

/// <summary>
///  @ 2017.12.25
/// 功能:通用静态方法
/// </summary>


public class GameUtility
{
    public const string AssetsFolderName = "Assets";

    public static string FormatToUnityPath(string path)
    {
        return path.Replace("\\", "/");
    }

    public static string FormatToSysFilePath(string path)
    {
        return path.Replace("/", "\\");
    }

    public static string FullPathToAssetPath(string full_path)
    {
        full_path = FormatToUnityPath(full_path);
        if (!full_path.StartsWith(Application.dataPath))
        {
            return null;
        }
        string ret_path = full_path.Replace(Application.dataPath, "");
        return AssetsFolderName + ret_path;
    }

    public static string GetFileExtension(string path)
    {
        return Path.GetExtension(path).ToLower();
    }

    public static string[] GetSpecifyFilesInFolder(string path, string[] extensions = null, bool exclude = false)
    {
        if (string.IsNullOrEmpty(path))
        {
            return null;
        }

        if (extensions == null)
        {
            return Directory.GetFiles(path, "*.*", SearchOption.AllDirectories);
        }
        else if (exclude)
        {
            return Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)
                .Where(f => !extensions.Contains(GetFileExtension(f))).ToArray();
        }
        else
        {
            return Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)
                .Where(f => extensions.Contains(GetFileExtension(f))).ToArray();
        }
    }

    public static string[] GetSpecifyFilesInFolder(string path, string pattern)
    {
        if (string.IsNullOrEmpty(path))
        {
            return null;
        }

        return Directory.GetFiles(path, pattern, SearchOption.AllDirectories);
    }

    public static string[] GetAllFilesInFolder(string path)
    {
        return GetSpecifyFilesInFolder(path);
    }

    public static string[] GetAllDirsInFolder(string path)
    {
        return Directory.GetDirectories(path, "*", SearchOption.AllDirectories);
    }

    public static void CheckFileAndCreateDirWhenNeeded(string filePath)
    {
        if (string.IsNullOrEmpty(filePath))
        {
            return;
        }

        FileInfo file_info = new FileInfo(filePath);
        DirectoryInfo dir_info = file_info.Directory;
        if (!dir_info.Exists)
        {
            Directory.CreateDirectory(dir_info.FullName);
        }
    }

    public static void CheckDirAndCreateWhenNeeded(string folderPath)
    {
        if (string.IsNullOrEmpty(folderPath))
        {
            return;
        }

        if (!Directory.Exists(folderPath))
        {
            Directory.CreateDirectory(folderPath);
        }
    }

    public static bool SafeWriteAllBytes(string outFile, byte[] outBytes)
    {
        try
        {
            if (string.IsNullOrEmpty(outFile))
            {
                return false;
            }

            CheckFileAndCreateDirWhenNeeded(outFile);
            if (File.Exists(outFile))
            {
                File.SetAttributes(outFile, FileAttributes.Normal);
            }
            File.WriteAllBytes(outFile, outBytes);
            return true;
        }
        catch (System.Exception ex)
        {
            Debug.LogError(string.Format("SafeWriteAllBytes failed! path = {0} with err = {1}", outFile, ex.Message));
            return false;
        }
    }

    public static bool SafeWriteAllLines(string outFile, string[] outLines)
    {
        try
        {
            if (string.IsNullOrEmpty(outFile))
            {
                return false;
            }

            CheckFileAndCreateDirWhenNeeded(outFile);
            if (File.Exists(outFile))
            {
                File.SetAttributes(outFile, FileAttributes.Normal);
            }
            File.WriteAllLines(outFile, outLines);
            return true;
        }
        catch (System.Exception ex)
        {
            Debug.LogError(string.Format("SafeWriteAllLines failed! path = {0} with err = {1}", outFile, ex.Message));
            return false;
        }
    }

    public static bool SafeWriteAllText(string outFile, string text)
    {
        try
        {
            if (string.IsNullOrEmpty(outFile))
            {
                return false;
            }

            CheckFileAndCreateDirWhenNeeded(outFile);
            if (File.Exists(outFile))
            {
                File.SetAttributes(outFile, FileAttributes.Normal);
            }
            File.WriteAllText(outFile, text);
            return true;
        }
        catch (System.Exception ex)
        {
            Debug.LogError(string.Format("SafeWriteAllText failed! path = {0} with err = {1}", outFile, ex.Message));
            return false;
        }
    }

    public static byte[] SafeReadAllBytes(string inFile)
    {
        try
        {
            if (string.IsNullOrEmpty(inFile))
            {
                return null;
            }

            if (!File.Exists(inFile))
            {
                return null;
            }

            File.SetAttributes(inFile, FileAttributes.Normal);
            return File.ReadAllBytes(inFile);
        }
        catch (System.Exception ex)
        {
            Debug.LogError(string.Format("SafeReadAllBytes failed! path = {0} with err = {1}", inFile, ex.Message));
            return null;
        }
    }

    public static string[] SafeReadAllLines(string inFile)
    {
        try
        {
            if (string.IsNullOrEmpty(inFile))
            {
                return null;
            }

            if (!File.Exists(inFile))
            {
                return null;
            }

            File.SetAttributes(inFile, FileAttributes.Normal);
            return File.ReadAllLines(inFile);
        }
        catch (System.Exception ex)
        {
            Debug.LogError(string.Format("SafeReadAllLines failed! path = {0} with err = {1}", inFile, ex.Message));
            return null;
        }
    }

    public static string SafeReadAllText(string inFile)
    {
        try
        {
            if (string.IsNullOrEmpty(inFile))
            {
                return null;
            }

            if (!File.Exists(inFile))
            {
                return null;
            }

            File.SetAttributes(inFile, FileAttributes.Normal);
            return File.ReadAllText(inFile);
        }
        catch (System.Exception ex)
        {
            Debug.LogError(string.Format("SafeReadAllText failed! path = {0} with err = {1}", inFile, ex.Message));
            return null;
        }
    }

    public static void DeleteDirectory(string dirPath)
    {
        string[] files = Directory.GetFiles(dirPath);
        string[] dirs = Directory.GetDirectories(dirPath);

        foreach (string file in files)
        {
            File.SetAttributes(file, FileAttributes.Normal);
            File.Delete(file);
        }

        foreach (string dir in dirs)
        {
            DeleteDirectory(dir);
        }

        Directory.Delete(dirPath, false);
    }

    public static bool SafeClearDir(string folderPath)
    {
        try
        {
            if (string.IsNullOrEmpty(folderPath))
            {
                return true;
            }

            if (Directory.Exists(folderPath))
            {
                DeleteDirectory(folderPath);
            }
            Directory.CreateDirectory(folderPath);
            return true;
        }
        catch (System.Exception ex)
        {
            Debug.LogError(string.Format("SafeClearDir failed! path = {0} with err = {1}", folderPath, ex.Message));
            return false;
        }
    }

    public static bool SafeDeleteDir(string folderPath)
    {
        try
        {
            if (string.IsNullOrEmpty(folderPath))
            {
                return true;
            }

            if (Directory.Exists(folderPath))
            {
                DeleteDirectory(folderPath);
            }
            return true;
        }
        catch (System.Exception ex)
        {
            Debug.LogError(string.Format("SafeDeleteDir failed! path = {0} with err: {1}", folderPath, ex.Message));
            return false;
        }
    }

    public static bool SafeDeleteFile(string filePath)
    {
        try
        {
            if (string.IsNullOrEmpty(filePath))
            {
                return true;
            }

            if (!File.Exists(filePath))
            {
                return true;
            }
            File.SetAttributes(filePath, FileAttributes.Normal);
            File.Delete(filePath);
            return true;
        }
        catch (System.Exception ex)
        {
            Debug.LogError(string.Format("SafeDeleteFile failed! path = {0} with err: {1}", filePath, ex.Message));
            return false;
        }
    }

    public static bool SafeRenameFile(string sourceFileName, string destFileName)
    {
        try
        {
            if (string.IsNullOrEmpty(sourceFileName))
            {
                return false;
            }

            if (!File.Exists(sourceFileName))
            {
                return true;
            }
            SafeDeleteFile(destFileName);
            File.SetAttributes(sourceFileName, FileAttributes.Normal);
            File.Move(sourceFileName, destFileName);
            return true;
        }
        catch (System.Exception ex)
        {
            Debug.LogError(string.Format("SafeRenameFile failed! path = {0} with err: {1}", sourceFileName, ex.Message));
            return false;
        }
    }

    public static bool SafeCopyFile(string fromFile, string toFile)
    {
        try
        {
            if (string.IsNullOrEmpty(fromFile))
            {
                return false;
            }

            if (!File.Exists(fromFile))
            {
                return false;
            }
            CheckFileAndCreateDirWhenNeeded(toFile);
            SafeDeleteFile(toFile);
            File.Copy(fromFile, toFile, true);
            return true;
        }
        catch (System.Exception ex)
        {
            Debug.LogError(string.Format("SafeCopyFile failed! formFile = {0}, toFile = {1}, with err = {2}",
                fromFile, toFile, ex.Message));
            return false;
        }
    }
}

下载链接: https://pan.baidu.com/s/1uOlQg6qcn4gFH16aDx8B-Q?pwd=w23u 提取码: w23u文章来源地址https://www.toymoban.com/news/detail-425307.html

到了这里,关于unity 中excel转json插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在线Excel转JSON工具

    在线Excel转JSON工具 上传excel将数据转换成json格式

    2024年02月07日
    浏览(40)
  • go: 高性能json工具 easyjson 简介

    先安装easyjson 在结构体上加//easyjson:json的注解 执行命令生成easyjson文件 使用示例

    2024年02月10日
    浏览(41)
  • Unity——DOTween插件使用方法简介

      缓动动画既是一种编程技术,也是一种动画的设计思路。从设计角度来看,可以有以下描述 事先设计很多基本的动画样式,如移动、缩放、旋转、变色和弹跳等。但这些动画都以抽象方式表示,一般封装为程序函数 动画的参数可以在使用时指定,如移动的起点和终点、旋

    2024年02月05日
    浏览(56)
  • 开源在线excel展示插件 js excel 在线插件 合并单元格 设置单元格样式 编辑工具

     源码:https://github.com/yufb12/dataexcel.git 在线预览地地址 http://www.dataexcel.cn/dataexceljs.html 1、js 版本 es6  2、绘图引擎 zrender 地址  ZRender 文档 (ecomfe.github.io)  3、 文件保存格式json  4、创建并初始化  5、文件 新建保存

    2024年02月17日
    浏览(53)
  • Unity 简单跑酷游戏策划与实现

    游戏名称:无尽探险跑酷(Endless Adventure Runner) 游戏类型:无尽跑酷 游戏背景 在一个充满未知和奇迹的世界中,玩家将扮演一名勇敢的探险家,穿越各种神秘的地域,躲避重重障碍,收集宝藏,并挑战自己的极限。 核心玩法 跑酷冒险 :玩家控制角色在无尽的道路上不断前

    2024年02月03日
    浏览(48)
  • 【工具插件类教学】NPOI插件使用Excel表格的导入和导出(包含图片)

    目录 一.导入Excel 解析读取 1.选择导入的目标文件 2.解析读取导入的文件

    2024年01月16日
    浏览(53)
  • unity库存系统插件-Ultimate Inventory System(一)功能简介

    如果说一个rpg游戏必不可少的功能,那就必须想到背包、商店、宝箱、交易、物品栏这些,我们可以将其统称为库存系统。可以说哪怕非rpg游戏也有库存系统的需求。 本文将使用 Ultimate Inventory System 插件快速实现库存系统,抛弃掉繁杂冗余的编程开发,快速实现游戏原型(主

    2024年01月20日
    浏览(45)
  • 谷歌插件开发:manifest.json 配置文件详解

    在当今的互联网时代,浏览器插件扮演着重要的角色,为用户提供了各种定制化的功能和增强体验。Google Chrome作为最受欢迎的浏览器之一,也提供了丰富的插件生态系统。而在Chrome插件的开发中,manifest.json配置文件起着至关重要的作用。本节将详细讲解manifest.json文件的作用

    2024年02月11日
    浏览(35)
  • Unity汉化一个插件 制作插件汉化工具

    思路: 创建一个存储字典的代码 完成之后我们就可以在项目中创建一个自定义字典了 在字典中添加几对常用AIP用来测试 创建一个编辑器窗口代码 读文件 将改好的数据进行写入 稍稍修正一下编辑器页面,随便导入一个插件试试看 我自己反正没实践过,可以先拿这个玩玩看

    2024年02月09日
    浏览(55)
  • Unity免费库/插件/工具类/扩展集合

    推荐一个GitHub关于Unity库/插件/工具类/扩展的集合,都是免费的,里面包含各种各样实用的工具,比如 对象池、八叉树、回放系统、粒子、寻路、Debug工具、VR、网络库、物理、AI、Input控制器等等等等,应有尽有。 链接:https://github.com/michidk/Unity-Script-Collection 梯子挂了,翻译

    2023年04月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包