mirror of
https://github.com/focus-creative-games/luban_unity.git
synced 2025-11-13 02:05:56 +08:00
Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d870def77c | ||
|
|
005c365bac | ||
|
|
57e577126c | ||
|
|
c19185ac4e | ||
|
|
7dcd33fd67 | ||
|
|
de0348c453 |
@ -1,3 +1,23 @@
|
||||
// Copyright 2025 Code Philosophy
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
@ -1,3 +1,23 @@
|
||||
// Copyright 2025 Code Philosophy
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
37
Editor/Menu.cs
Normal file
37
Editor/Menu.cs
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright 2025 Code Philosophy
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Luban.Editor
|
||||
{
|
||||
public static class Menu
|
||||
{
|
||||
|
||||
[MenuItem("Luban/About", priority = 0)]
|
||||
public static void OpenAbout() => Application.OpenURL("https://www.datable.cn/docs/intro");
|
||||
|
||||
|
||||
[MenuItem("Luban/Quick Start")]
|
||||
public static void OpenQuickStart() => Application.OpenURL("https://www.datable.cn/docs/beginner/quickstart");
|
||||
}
|
||||
|
||||
}
|
||||
11
Editor/Menu.cs.meta
Normal file
11
Editor/Menu.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f52e7b7b0f4a2d14abf4f9ff4e0ad038
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
215
README.md
215
README.md
@ -33,217 +33,16 @@ Luban standardizes the game configuration development workflow, which can greatl
|
||||
|
||||
## Documentation
|
||||
|
||||
- [Official Documentation](https://luban.doc.code-philosophy.com/)
|
||||
- [Quick Start](https://luban.doc.code-philosophy.com/docs/beginner/quickstart)
|
||||
- [Luban](https://github.com/focus-creative-games/luban)
|
||||
- [Official Documentation](https://www.datable.cn/)
|
||||
- [Quick Start](https://www.datable.cn/docs/beginner/quickstart)
|
||||
- **Example Project** ([github](https://github.com/focus-creative-games/luban_examples)) ([gitee](https://gitee.com/focus-creative-games/luban_examples) )
|
||||
- Support and contact
|
||||
- QQ group: 692890842 (Luban development exchange group)
|
||||
- discord: https://discord.gg/dGY4zzGMJ4
|
||||
- Email: luban@code-philosophy.com
|
||||
|
||||
## Excel format overview
|
||||
|
||||
basic data format
|
||||
|
||||

|
||||
|
||||
enum data format
|
||||
|
||||

|
||||
|
||||
bean data format
|
||||
|
||||

|
||||
|
||||
Polymorphic bean data format
|
||||
|
||||

|
||||
|
||||
container
|
||||
|
||||

|
||||
|
||||
nullable type
|
||||
|
||||

|
||||
|
||||
no primary key table
|
||||
|
||||

|
||||
|
||||
Multi-primary key table (joint index)
|
||||
|
||||

|
||||
|
||||
Multi-primary key table (independent index)
|
||||
|
||||

|
||||
|
||||
singleton table
|
||||
|
||||
Some configurations have only one copy globally, such as the opening level of the guild module, the initial size of the backpack, and the upper limit of the backpack. At this time, it is more appropriate to use a singleton table to configure these data.
|
||||
|
||||

|
||||
|
||||
vertical table
|
||||
|
||||
Most tables are horizontal tables, that is, one record per row. Some tables, such as singleton tables, are more comfortable to fill in vertically, with one field per line. A1 is ##column means using vertical table mode. The singleton table above is filled in as follows in vertical table mode.
|
||||
|
||||

|
||||
|
||||
Use sep to read beans and nested beans.
|
||||
|
||||

|
||||
|
||||
Use sep to read normal containers.
|
||||
|
||||

|
||||
|
||||
Use sep to read structure containers.
|
||||
|
||||

|
||||
|
||||
|
||||
multi-level header
|
||||
|
||||

|
||||
|
||||
Qualify column format
|
||||
|
||||

|
||||
|
||||
Enumerated column-qualified format
|
||||
|
||||

|
||||
|
||||
polymorphic bean column qualification format
|
||||
|
||||

|
||||
|
||||
column-qualified format for map
|
||||
|
||||

|
||||
|
||||
|
||||
multiline field
|
||||
|
||||

|
||||
|
||||
Data label filtering
|
||||
|
||||

|
||||
|
||||
|
||||
## Overview of other formats
|
||||
|
||||
Take behavior tree as an example to show how to configure behavior tree configuration in json format. For xml, lua, yaml and other formats, please refer to [Detailed Documentation](https://luban.doc.code-philosophy.com/docs/intro).
|
||||
|
||||
```json
|
||||
{
|
||||
"id": 10002,
|
||||
"name": "random move",
|
||||
"desc": "demo behavior tree",
|
||||
"executor": "SERVER",
|
||||
"blackboard_id": "demo",
|
||||
"root": {
|
||||
"$type": "Sequence",
|
||||
"id": 1,
|
||||
"node_name": "test",
|
||||
"desc": "root",
|
||||
"services": [],
|
||||
"decorators": [
|
||||
{
|
||||
"$type": "UeLoop",
|
||||
"id": 3,
|
||||
"node_name": "",
|
||||
"flow_abort_mode": "SELF",
|
||||
"num_loops": 0,
|
||||
"infinite_loop": true,
|
||||
"infinite_loop_timeout_time": -1
|
||||
}
|
||||
],
|
||||
"children": [
|
||||
{
|
||||
"$type": "UeWait",
|
||||
"id": 30,
|
||||
"node_name": "",
|
||||
"ignore_restart_self": false,
|
||||
"wait_time": 1,
|
||||
"random_deviation": 0.5,
|
||||
"services": [],
|
||||
"decorators": []
|
||||
},
|
||||
{
|
||||
"$type": "MoveToRandomLocation",
|
||||
"id": 75,
|
||||
"node_name": "",
|
||||
"ignore_restart_self": false,
|
||||
"origin_position_key": "x5",
|
||||
"radius": 30,
|
||||
"services": [],
|
||||
"decorators": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## code usage preview
|
||||
|
||||
|
||||
Here we only briefly show the usage of c#, typescript, go, and c++ languages in development. For more languages and more detailed usage examples and codes, see [Example Project](https://github.com/focus-creative-games/luban_examples ).
|
||||
|
||||
- C# usage example
|
||||
|
||||
```C#
|
||||
// One line of code can load all configurations. cfg.Tables contains an instance field for all tables.
|
||||
var tables = new cfg.Tables(file => return new ByteBuf(File.ReadAllBytes($"{gameConfDir}/{file}.bytes")));
|
||||
// access a singleton table
|
||||
Console.WriteLine(tables.TbGlobal.Name);
|
||||
// access normal key-value table
|
||||
Console.WriteLine(tables.TbItem.Get(12).Name);
|
||||
// support operator [] usage
|
||||
Console.WriteLine(tables.TbMail[1001].Desc);
|
||||
```
|
||||
|
||||
- example of typescript usage
|
||||
|
||||
```typescript
|
||||
// One line of code can load all configurations. cfg.Tables contains an instance field for all tables.
|
||||
let tables = new cfg. Tables(f => JsHelpers. LoadFromFile(gameConfDir, f))
|
||||
// access a singleton table
|
||||
console.log(tables.TbGlobal.name)
|
||||
// access normal key-value table
|
||||
console.log(tables.TbItem.get(12).Name)
|
||||
```
|
||||
|
||||
- go usage example
|
||||
|
||||
```go
|
||||
// One line of code can load all configurations. cfg.Tables contains an instance field for all tables.
|
||||
if tables , err := cfg.NewTables(loader) ; err != nil {
|
||||
println(err. Error())
|
||||
return
|
||||
}
|
||||
// access a singleton table
|
||||
println(tables. TbGlobal. Name)
|
||||
// access normal key-value table
|
||||
println(tables. TbItem. Get(12). Name)
|
||||
```
|
||||
|
||||
- c++ usage example
|
||||
|
||||
```cpp
|
||||
cfg::Tables tables;
|
||||
if (!tables.load([](ByteBuf& buf, const std::string& s) { return buf.loadFromFile("../GenerateDatas/bytes/" + s + ".bytes"); }))
|
||||
{
|
||||
std::cout << "== load fail == " << std::endl;
|
||||
return;
|
||||
}
|
||||
std::cout << tables. TbGlobal->name << std::endl;
|
||||
std::cout << tables.TbItem.get(12)->name << std::endl;
|
||||
```
|
||||
## Support and Contact
|
||||
|
||||
- QQ group: 692890842 (Luban development exchange group)
|
||||
- discord: https://discord.gg/dGY4zzGMJ4
|
||||
- Email: luban#code-philosophy.com
|
||||
|
||||
## license
|
||||
|
||||
|
||||
15
README_zh.md
15
README_zh.md
@ -33,13 +33,16 @@ luban标准化了游戏配置开发工作流,可以极大提升策划和程序
|
||||
|
||||
## 文档
|
||||
|
||||
- [官方文档](https://luban.doc.code-philosophy.com/)
|
||||
- [快速上手](https://luban.doc.code-philosophy.com/docs/beginner/quickstart)
|
||||
- [Luban](https://github.com/focus-creative-games/luban)
|
||||
- [官方文档](https://www.datable.cn/)
|
||||
- [快速上手](https://www.datable.cn/docs/beginner/quickstart)
|
||||
- **示例项目** ([github](https://github.com/focus-creative-games/luban_examples)) ([gitee](https://gitee.com/focus-creative-games/luban_examples))
|
||||
- 支持与联系
|
||||
- QQ群: 692890842 (Luban开发交流群)
|
||||
- discord: https://discord.gg/dGY4zzGMJ4
|
||||
- 邮箱: luban@code-philosophy.com
|
||||
|
||||
## 支持与联系
|
||||
|
||||
- QQ群: 692890842 (Luban开发交流群)
|
||||
- discord: https://discord.gg/dGY4zzGMJ4
|
||||
- 邮箱: luban#code-philosophy.com
|
||||
|
||||
## license
|
||||
|
||||
|
||||
@ -1,3 +1,23 @@
|
||||
// Copyright 2025 Code Philosophy
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
|
||||
namespace Luban
|
||||
{
|
||||
|
||||
@ -1,3 +1,23 @@
|
||||
// Copyright 2025 Code Philosophy
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
using System;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Numerics;
|
||||
|
||||
@ -1,3 +1,23 @@
|
||||
// Copyright 2025 Code Philosophy
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
/* * * * *
|
||||
* A simple JSON Parser / builder
|
||||
* ------------------------------
|
||||
|
||||
@ -1,3 +1,23 @@
|
||||
// Copyright 2025 Code Philosophy
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
//#define USE_SharpZipLib
|
||||
/* * * * *
|
||||
* This is an extension of the SimpleJSON framework to provide methods to
|
||||
|
||||
@ -1,3 +1,23 @@
|
||||
// Copyright 2025 Code Philosophy
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
#region License and information
|
||||
/* * * * *
|
||||
*
|
||||
|
||||
@ -1,3 +1,23 @@
|
||||
// Copyright 2025 Code Philosophy
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
#if UNITY_5_3_OR_NEWER
|
||||
#region License and information
|
||||
/* * * * *
|
||||
|
||||
@ -1,3 +1,23 @@
|
||||
// Copyright 2025 Code Philosophy
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
// of this software and associated documentation files (the "Software"), to deal
|
||||
// in the Software without restriction, including without limitation the rights
|
||||
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
// copies of the Software, and to permit persons to whom the Software is
|
||||
// furnished to do so, subject to the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be included in all
|
||||
// copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
// SOFTWARE.
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
@ -39,7 +59,8 @@ namespace Luban
|
||||
|
||||
public static string CollectionToString<TK, TV>(IDictionary<TK, TV> dic)
|
||||
{
|
||||
var sb = new StringBuilder('{');
|
||||
var sb = new StringBuilder();
|
||||
sb.Append('{');
|
||||
foreach (var e in dic)
|
||||
{
|
||||
sb.Append(e.Key).Append(':');
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
{
|
||||
"name": "com.code-philosophy.luban",
|
||||
"version": "1.0.0",
|
||||
"version": "1.1.1",
|
||||
"displayName": "Luban",
|
||||
"description": "luban is a powerful, easy-to-use, elegant and stable game configuration solution.",
|
||||
"category": "Runtime",
|
||||
"documentationUrl": "https://luban.doc.code-philosophy.com/#/",
|
||||
"changelogUrl": "https://luban.doc.code-philosophy.com/#/other/changelog",
|
||||
"documentationUrl": "https://www.datable.cn/docs/intro",
|
||||
"licensesUrl": "https://github.com/focus-creative-games/luban_unity/blob/main/LICENSE",
|
||||
"keywords": [
|
||||
"luban",
|
||||
|
||||
Loading…
Reference in New Issue
Block a user