Dictionary 试图了解如何访问对象/脚本之外的词典

Dictionary 试图了解如何访问对象/脚本之外的词典,dictionary,unity3d,Dictionary,Unity3d,我想我根本不懂字典。我知道如何设置它们并从同一个脚本/对象访问它们,但当涉及到从非父/子对象的不同对象/脚本访问它们时,我不知道我在做什么。这是我为保存字典的游戏对象编写的脚本: using UnityEngine; using System.Collections; using System.Collections.Generic; public class HeroStats : MonoBehaviour { //Dictionary Structure <Key, va

我想我根本不懂字典。我知道如何设置它们并从同一个脚本/对象访问它们,但当涉及到从非父/子对象的不同对象/脚本访问它们时,我不知道我在做什么。这是我为保存字典的游戏对象编写的脚本:

using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class HeroStats : MonoBehaviour {

    //Dictionary Structure <Key, value>

    Dictionary<string,int> HeroStat = new Dictionary<string,int>();
    Dictionary<string,string>HeroName = new Dictionary<string,string>();
    Dictionary<string,string>StatDef = new Dictionary<string,string>();
    //Initialization:
    void Start(){
    //===NAME==========================
    HeroName.Add("Name","Insert Name");
    //===STATS=========================
    HeroStat.Add("Constitution", 3);
    HeroStat.Add("Dexterity", 3);
    HeroStat.Add("Intelligence", 3);
    HeroStat.Add("Strength", 3);
    HeroStat.Add("Wisdom", 3);
    //===STAT DEFINITION==============
    StatDef.Add("Constitution", "Your Overall Healthiness");

        print (HeroName["Name"]);
        print (HeroStat["Strength"]);
    }
}
使用UnityEngine;
使用系统集合;
使用System.Collections.Generic;
公共类HeroStats:单行为{
//词典结构
Dictionary HeroStat=新字典();
DictionaryHeroName=新字典();
DictionaryStatDef=新字典();
//初始化:
void Start(){
//==姓名==========================
名称。添加(“名称”、“插入名称”);
//==统计数据=========================
添加(“宪法”,第3页);
添加(“灵巧”,3);
HeroStat.添加(“情报”,第3页);
添加(“强度”,3);
添加(“智慧”,第3页);
//==统计定义==============
添加(“体质”、“你的整体健康”);
打印(HeroName[“Name”]);
印刷品(HeroStat[“强度]);
}
}
这是我试图用来访问字典的脚本:

using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System;

public class heroName : MonoBehaviour {

    public HeroStats heroStats;
    public Text text;
    public string lookUp;
    public string what;
    // Use this for initialization
    void Start(){
        heroStats = FindObjectOfType<HeroStats>();
        what = heroStats.GetType().GetField("Name").GetValue(this).ToString();
        text = gameObject.GetComponent<Text>();
        lookUp = this.gameObject.name;
    }

    void Update(){
    }
}
使用UnityEngine;
使用UnityEngine.UI;
使用系统集合;
使用制度;
公共类名称:MonoBehavior{
公共HeroStats HeroStats;
公共文本;
公共字符串查找;
公共字符串是什么;
//用于初始化
void Start(){
heroStats=FindObjectOfType();
what=heroStats.GetType().GetField(“Name”).GetValue(this.ToString();
text=gameObject.GetComponent();
lookUp=this.gameObject.name;
}
无效更新(){
}
}

我只是不知道我现在在做什么,也不知道谷歌应该做什么。我看过的每个视频/教程都会显示他们从同一脚本/对象访问字典。

字典只是存储数据的一种方式。就像int或字符串一样。您需要在外部脚本中访问词典

您需要在HeroStats中公开您的字典,然后在heroName中只需

heroStats.HeroStat["Constitution"]

哦,我的上帝。。。我完全想念公众。哇,在过去的3个多小时里(现在是早上5点),我一直在读字典,但我从来没有想过要把我的字典公之于众。。。非常感谢你Atra。。。天哪。。。我应该去睡觉了,我知道这是答案,但我想补充一些重要的东西。把你的字典公之于众不是个好主意。最好的方法是创建一个可以更新或访问字典的公共函数。例如,public updateJetro(字符串值){heroStats.HeroStat[Value];}