GlobalConfigComponent学习笔记
请大家关注我的微博:@NormanLin_BadPixel坏像素
这其实是一个保存全局变量的类。存放各种IP地址。(其实就存了AssetBundleServerUrl和Address)
public class GlobalConfigComponent : Component
{
public static GlobalConfigComponent Instance;
public GlobalProto GlobalProto;
public void Awake()
{
Instance = this;
string configStr = ConfigHelper.GetGlobal();
this.GlobalProto = MongoHelper.FromJson<GlobalProto>(configStr);
}
}
这里会根据读取到的字符串通过Json反序列化成一个GlobalProto变量。
GlobalProto
public class GlobalProto
{
public string AssetBundleServerUrl;
public string Address;
public string GetUrl()
{
string url = this.AssetBundleServerUrl;
#if UNITY_ANDROID
url += "Android/";
#elif UNITY_IOS
url += "IOS/";
#else
url += "PC/";
#endif
return url;
}
}
这是GlobalProto的结构。
ConfigHelper
public static class ConfigHelper
{
...
public static string GetGlobal()
{
try
{
GameObject config = (GameObject)Resources.Load("KV");
string configStr = config.Get<TextAsset>("GlobalProto").text;
return configStr;
}
catch (Exception e)
{
throw new Exception($"load global config file fail", e);
}
}
}
这里则是读取预制体里面的信息。
GameObjectHelper
public static class GameObjectHelper
{
public static T Get<T>(this GameObject gameObject, string key) where T : class
{
try
{
return gameObject.GetComponent<ReferenceCollector>().Get<T>(key);
}
catch (Exception e)
{
throw new Exception($"获取{gameObject.name}的ReferenceCollector key失败, key: {key}", e);
}
}
}
这是对GameObject对象的扩展,通过其上的ReferenceCollector组件获取储存的key值对应的信息。
ReferenceCollector
关于这个ReferenceCollector类,大家看看就好,里面的方法大部分服务于编辑器功能。
通过这个组件的学习,我们可以知道,如果我们想要修改Address跟AssetBundleServerUrl,就去修改资源文件夹里面的GlobalProto文件吧。