我正在工作一个有趣的边项目,制作一个文本为基础的冒险游戏和引擎。我想把游戏的内容都写成json。我想将这些json文件输入到一系列工厂中,这些工厂在游戏世界启动时实例化游戏世界。
让我举一个例子:
客房课程:
public class Room{
public List<Item> Items;
public List<string> ItemStrings;
public string Description;
public void AddRoom(Room room){
Items.Add(room);
}
}项目类别:
public class Item{
string Name;
string Description;
}Json档案:
treasureRoom.json
{
"ItemStrings": [
"pie",
"shoe"
],
"Description": "A Fancy Room",
}pie.json
{
"Name" : "pie",
"Description": "its a pie",
}shoe.json
{
"Name" : "shoe",
"Description": "its a shoe",
}工厂级:
public static Room MakeRoom(string roomName)
{
var room = JsonConvert.DeserializeObject<Room>(Util.Readfile($"{basePath}/GameObjects/Rooms/{roomName}.json"));
foreach(var item in room.ItemStrings)
{
room.AddItem(Factory.MakeItem(item));
}
return room;
}
public static Item MakeItem(sting fileName){
return JsonConvert.DeserializeObject<Item>(Util.Readfile($"{basePath}/GameObjects/Items/{itemName}.json"));
}现在,我不喜欢我的Room对象需要同时拥有Items和ItemStrings这一事实--我想把ItemStrings从Room类中删除,我想知道给出这个配置的最佳方法是什么。
假设我正在打电话给Factory.MakeRoom("treasureRoom");
发布于 2022-09-01 21:54:03
我很确定我渴望的是对JSONConverter逻辑的重写,如这里所解释的:https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-converters-how-to?pivots=dotnet-6-0
我会回来更新这个答案,一旦我有一个工作的例子。但我有99%的把握,这是我的要求。
https://stackoverflow.com/questions/73564641
复制相似问题