Giter VIP home page Giter VIP logo

configmanager's Introduction

Config Manager

ConfigManager帮您一键生成配置对应的解析类,并将其序列化。
你只需轻点鼠标即可读取配置~

其他语言版本: 简体中文 English
logo

本工具优势

  1. 光速解析:解析完全放在编辑模式下完成,运行时只需加载序列化文件即可。
  2. 支持任意格式:txt、csv、json、xml、xls、xlsx等等。
  3. 无体积:无运行时脚本,完全不占发行包体积。
  4. 智能判断类型:不需要配置人员懂类型概念,自动选取最优类型。
  5. 防止出错:"."操作符索引数据,编译器自动检查。

快速使用

编辑配置:


表格配置说明
Json配置说明
Xml配置说明

编辑器:

  1. 点击菜单栏"Window/Config Manager";
  2. 设置对应的输入/输出路径;
  3. 点击Output。


运行时:

  1. 调用反序列化接口;
  2. 使用配置文件。
SerializableSet set = Resources.Load<SerializableSet>("SerializableSet");
Deserializer.Deserialize(set);

/* 与加载解耦,不依赖加载方式
AssetBundle bundle = AssetBundle.LoadFromFile(Application.streamingAssetsPath + "/config.ab");
set = bundle.LoadAsset<SerializableSet>("SerializableSet");
Deserializer.Deserialize(set);
*/
        
MonsterSheet monsterSheet = MonsterSheet.Get(210102)
print(monsterSheet.name);

范例:

https://github.com/RickJiangShu/ConfigManager-Example

贡献者名单

如果你有任何Bug、问题和意见请在Issues或蛮牛里提出来,有时间一定立马回复,意见一经采纳就被列入“贡献者名单”。

  1. LiGo 提供希望支持csv的建议
  2. k1104480005 提供希望支持Get所有数据的方法
  3. fuliufuliu 希望直接解析xls和xlsx文件
  4. zhengyiunity MAC电脑上解析时,注释部分中文乱码。
  5. takaaptech 让我意识到不要覆盖AssetBundleName和提供打包回调接口
  6. nijjkk 反馈在Mac上Excel输入中文会带拼音
  7. Hazukiaoi 反馈Json解析问题
  8. kaifeng0301 提供“按需加载”的需求(尚未支持)
  9. 漂流小子 对于安全性的提醒

configmanager's People

Contributors

rickjiangshu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

configmanager's Issues

解析json格式出现bug

{
"Itmes": [
{
"Item": {
"level": 1,
"points": [
{
"point": "0,0",
"level": 2
}
]
}
},
{
"Item": {
"level": 2,
"points": [
{
"point": "0,0",
"level": 2
}
]
}
}
]
}
解析上面的json格式序列化出来的配置文件出现错乱

通过Python json.dumps输出的Json文件解析失败

Unity版本5.6.1P1,测试项目自带的json解析正常
通过Python json.dumps输出的Json文件解析失败

python源码如下:

import json

class Friend:
    def __init__(self, name, phone):
        self.name = name
        self.phone = phone

    def getDic(self):
        dic = {}
        dic['Name'] = self.name
        dic['phone'] = self.phone
        return dic
    pass


dict = {}
dict['name'] = 'Acc'
dict['age'] = 20
dict['sex'] = 'M'
dict['work'] = True

dict['Attem'] = [22,'AC',20012,False]

friendList = {}
friendList['VIP'] = {}
friendList['NON'] = {}


F001 = Friend('AC',1023)
F002 = Friend('BC',1025)
F003 = Friend('BC',1025)

friendList['VIP']['F001'] = F001.getDic()
friendList['VIP']['F002'] = F002.getDic()
friendList['NON']['F001'] = F003.getDic()

dict['FriendList'] = friendList

jsonlist = json.dumps(dict)

print(jsonlist)

最后获得的json如下:

{"name": "Acc", "age": 20, "sex": "M", "work": true, "Attem": [22, "AC", 20012, false], "FriendList": {"VIP": {"F001": {"Name": "AC", "phone": 1023}, "F002": {"Name": "BC", "phone": 1025}}, "NON": {"F001": {"Name": "BC", "phone": 1025}}}}

最后文件命名为 Json1.json,并解析失败

Json1.json解析失败!请检查格式是否正确,如果格式正确请联系作者:https://github.com/RickJiangShu/ConfigManager/issues
System.ArgumentException: An element with the same key already exists in the dictionary.
at System.Collections.Generic.Dictionary2[System.String,System.Object].Add (System.String key, System.Object value) [0x0007e] in /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:404 at ConfigManagerEditor.JsonParser.ParseObject (System.String& content) [0x00032] in F:\ConfigManager-Example-master\Assets\Editor\Parser\JSONParser.cs:85 at ConfigManagerEditor.JsonParser.ParseRoot (System.String json) [0x0002d] in F:\ConfigManager-Example-master\Assets\Editor\Parser\JSONParser.cs:65 at ConfigManagerEditor.JsonParser.Parse (System.String content, System.String fileName) [0x0003b] in F:\ConfigManager-Example-master\Assets\Editor\Parser\JSONParser.cs:50 at ConfigManagerEditor.ConfigWindow.GetSources (System.Collections.Generic.List1& sheets, System.Collections.Generic.List1& structs) [0x00180] in F:\ConfigManager-Example-master\Assets\Editor\ConfigWindow.cs:288 UnityEngine.Debug:LogError(Object) ConfigManagerEditor.ConfigWindow:GetSources(List1&, List`1&) (at Assets/Editor/ConfigWindow.cs:293)
ConfigManagerEditor.ConfigWindow:Output() (at Assets/Editor/ConfigWindow.cs:148)
ConfigManagerEditor.ConfigWindow:OnGUI() (at Assets/Editor/ConfigWindow.cs:94)
UnityEditor.DockArea:OnGUI()

Can i delete and regenerate files in StreamingAssets

Hi,
Your lib is awesome! I can load data from SerializableSet but I do not know what is the file in StreamingAssets. Are they auto generate? If I modify data in input CSV, do I have to modify the file in StreamingAssets again?
Sometimes, Press output do not re generating file (Unity 2017.1.0f3 mac)
screen shot 2017-07-18 at 9 05 49 am

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.