0

我在 Unity 工作,我正在尝试将 LitJSON 用于库存和能力系统以及统计信息。我完成了这项工作,这一切都通过我放入脚本中的一些函数来工作。团结起来,它工作得非常好。但是,当我为 pc 独立构建游戏时,JSON 文件中的所有数据都不起作用,并且 UI 显示空白文本。

这是我的角色统计控制函数脚本:

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;

        }
    }
}

该脚本在整个游戏中使用,并且统计值显示在屏幕上: 在此处输入图像描述

但是,这就是我实际构建它时的样子:在此处输入图像描述

4

1 回答 1

1

你可以查一下你的代码。

  • 首先尝试使用 Resource.Load TextAsset ;

文本资产

资源.加载

  • 第二次尝试使用 JSONObject 或 Minijson 加载所有属性并在一个类中实现:

JSON对象

迷你JSON

于 2017-03-09T06:22:32.537 回答