0
私は、JSONファイルを使用してUnityで自分のゲームの在庫アイテムのリストを作成していました。それはうまくやっていたが、今は一見簡単なことに固執している。UnityとC#の基本的なJSONに問題がある
JSONファイルを使ってブーリアン/整数をロードするだけで、自分のサーバーをホストしているプレイヤーは自分のスタイルにカスタマイズできます。
ここではうまくいきました。 .....私が取り出した繰り返しコードです。
void SetInitialReferences()
{
itemData = JsonMapper.ToObject(File.ReadAllText(Application.dataPath + "/StreamingAssets/Items.json"));
ConstructItemDatabase();
}
public Item FetchItemByID(int id)
{
for(int i = 0; i < dataBase.Count; i++ )
if (dataBase[i].ItemID == id)
return dataBase[i];
return null;
}
void ConstructItemDatabase()
{
for (int i = 0; i < itemData.Count; i++)
{
dataBase.Add(new Item((int)itemData[i]["id"], ...........));
}
}
public class Item
{
public int ItemID { get; set; }
..........
public Item (int itemId...............)
{
this.ItemID = itemId;
............
}
ここに私の新しいコードがあります。私はそれを複数回アクセスする必要はないので、リストに入れたくありません。
void Start()
{
serverData = JsonMapper.ToObject(File.ReadAllText(Application.dataPath + "/StreamingAssets/ServerData.json"));
ChangeServerOptions();
}
public void ChangeServerOptions()
{
this.treesRespawn = (bool)serverData["TreesRespawn"];
this.rocksRespawn = (bool)serverData["RocksRespawn"];
.
.
.
.
.
}
そして最後にここに私のエラーだ、私はその私がJsonMapper.ToObjectを使用しているためだと思うが、私は他の方法を知りません。
InvalidOperationException: Instance of JsonData is not a dictionary
LitJson.JsonData.EnsureDictionary()
LitJson.JsonData.get_Item (System.String prop_name)
Overdose.GameManager_ServerOptions.ChangeServerOptions() (at Assets/Scripts/MasterScripts/GameManager_ServerOptions.cs:61)
Overdose.GameManager_ServerOptions.Start() (at Assets/Scripts/MasterScripts/GameManager_ServerOptions.cs:53)
コーダーではないユーザーがサーバーの設定を変更できるようにするだけです。
{
"id": 0,
"title": "G36c",
"description": "Primary Weapon. Automatic Rifle, uses 5.56 ammuntion.",
"value": 50000,
"maxQuantity": 1,
"maxSpecialQuantity" : 1,
"health": 100,
"type": "Weapon",
"secondType": "",
"specialType": "PrimaryWeapon",
"attachments": 6,
"smuggle": false,
"ammoType": "FiveAmmo",
"battery": false,
"fuel" : false,
"stackable": false,
"slug": "g36c"
},
と新しい:ここ
は古いJSONだ
{
//Resources
"TreesRespawn": true,
"RocksRespawn": true,
"MiscResourceRespawn": true,
.
.
.
.
.
.