2017-03-09 80 views
0

我在Unity工作,我正在嘗試使用LitJSON來製作庫存和能力系統以及統計數據。我完成了這項工作,並且通過我在腳本中添加的一些功能進行工作。在統一中,它運作得非常好。但是,當我構建獨立於PC的遊戲時,JSON文件中的所有數據都不起作用,UI顯示空白文本。爲什麼不使用LitJSON構建工作,但在編輯器中工作?

這是我的性格Stat的控制功能的腳本:

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using System.IO; 
using LitJson; 
using System.Linq; 


public class Character 
{ 
    public string Name  { get; set; } 
    public int Id   { get; set; } 
    public int Strength  { get; set; } 
    public int Intelligence { get; set; } 
    public int Defense  { get; set; } 
    public int Resistance { get; set; } 
    public int Accuracy  { get; set; } 
    public int Agility  { get; set; } 
    public int Speed  { get; set; } 
    public int MaxAP  { get; set; } 
    public int CurrentAP { get; set; } 
    public int MaxHP  { get; set; } 
    public int CurrentHP { get; set; } 
    public int Affinity  { get; set; } 

    public Character() { 

    } 
} 

public class CharacterStats : MonoBehaviour 
{ 
    public static string character1FilePath = "/Resources/character1Stats.json"; 
    public static string character2FilePath = "/Resources/character2Stats.json"; 
    public static string character3FilePath = "/Resources/character3Stats.json"; 
    public static string character4FilePath = "/Resources/character4Stats.json"; 


    public static string GetName (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Name; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Name; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Name; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Name; 

     default: 
      return null; 

     } 
    } 

    public static int GetStrength (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Strength; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Strength; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Strength; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Strength; 

     default: 
      return 0; 

     } 
    } 

    public static int GetIntelligence (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Intelligence; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Intelligence; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Intelligence; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Intelligence; 

     default: 
      return 0; 

     } 
    } 


    public static int GetDefense (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Defense; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Defense; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Defense; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Defense; 

     default: 
      return 0; 

     } 
    } 


    public static int GetResistance (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Resistance; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Resistance; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Resistance; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Resistance; 

     default: 
      return 0; 

     } 
    } 


    public static int GetAccuracy (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Accuracy; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Accuracy; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Accuracy; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Accuracy; 

     default: 
      return 0; 

     } 
    } 

    public static int GetAgility (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Agility; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Agility; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Agility; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Agility; 

     default: 
      return 0; 

     } 
    } 

    public static int GetSpeed (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Speed; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Speed; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Speed; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Speed; 

     default: 
      return 0; 

     } 
    } 

    public static int GetMaxAP (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.MaxAP; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.MaxAP; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.MaxAP; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.MaxAP; 

     default: 
      return 0; 

     } 
    } 

    public static int GetCurrentAP (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.CurrentAP; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.CurrentAP; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.CurrentAP; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.CurrentAP; 

     default: 
      return 0; 

     } 
    } 

    public static int GetMaxHP (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.MaxHP; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.MaxHP; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.MaxHP; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.MaxHP; 

     default: 
      return 0; 

     } 
    } 

    public static int GetCurrentHP (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.CurrentHP; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.CurrentHP; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.CurrentHP; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.CurrentHP; 

     default: 
      return 0; 

     } 
    } 

    public static int GetAffinity (int characterID) { 
     Character character = new Character(); 
     string characterString; 
     switch (characterID) { 
     case 1: 
      characterString = File.ReadAllText (Application.dataPath + character1FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Affinity; 

     case 2: 
      characterString = File.ReadAllText(Application.dataPath + character2FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Affinity; 

     case 3: 
      characterString = File.ReadAllText(Application.dataPath + character3FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Affinity; 

     case 4: 
      characterString = File.ReadAllText(Application.dataPath + character4FilePath); 
      character = JsonMapper.ToObject<Character> (characterString); 
      return character.Affinity; 

     default: 
      return 0; 

     } 
    } 
} 

此腳本用於在整個比賽中,和統計數據的值顯示在屏幕上: enter image description here

然而,這是我實際構建它時的樣子:enter image description here

+0

你在哪裏放置json文件? – Programmer

+0

in /資源文件夾中的資源 –

+0

這就是我認爲的問題。這個問題與LitJSON無關。檢查重複的問題以瞭解如何閱讀放置在資源文件夾中的文本文件。 'File.ReadAllText'不應該用於那個。 – Programmer

回答

1

你可以查看你的代碼。

  • 首先嚐試使用Resource.Load TextAsset;

TextAsset

Resources.Load

  • 第二個嘗試使用的JSONObject或Minijson加載所有的屬性,在一個類中實現:

JSONobject

MiniJSON

+0

我這樣做,它並沒有解決我的問題,但那是因爲它首先不是JSON錯誤。 –

相關問題