public ScriptableObjectBase LoadTable(string fileName) { ScriptableObjectBase scriptable = null; #if UNITY_EDITOR // 导表时就走下面流程 if (!Application.isPlaying || ClientDataBaseManager.SimulateTableAssetInEditor) { scriptable = CreateScriptableInstance(fileName); if (scriptable == null) { Debug.LogError(string.Format("#TableCheck# 表[{0}]没有对应的脚本,请重新导表!!", fileName)); return(null); } scriptable.LoadGameTable(false); return(scriptable); } #endif #if NO_UPDATE scriptable = Utility.AssetRelate.ResourcesLoadCheckNull <ScriptableObjectBase>(c_pathScriptableAssetRoot + m_config.GetScriptableAssetName(fileName)); #else //scriptable = (ScriptableObjectBase)RM.Instance.GetResource(c_pathScriptableAssetRoot + m_config.GetScriptableAssetName(fileName,true)); #endif return(scriptable); }
/// <summary> /// 建立 Scriptable Asset /// </summary> /// <returns>是否成功建立</returns> public bool CreateScriptableAssets(string scriptableScriptName, string scriptableAssetName) { m_config = ClientDataBaseManager.Instance.Config; MonoScript script = AssetDatabase.LoadAssetAtPath <MonoScript>(m_config.GetScriptableScriptsPath() + scriptableScriptName); if (script == null || script.GetClass() == null) { Debug.LogError(string.Format("Scriptable Script is Null. [Path:{0}]", m_config.GetScriptableScriptsPath() + scriptableScriptName)); return(false); } string path = m_config.GetScriptableAssetPath() + scriptableAssetName; ScriptableObjectBase scriptableObjectBase = AssetDatabase.LoadAssetAtPath <ScriptableObjectBase>(path); if (scriptableObjectBase == null) { UtilityEditor.CreateFolder(m_config.GetScriptableAssetPath()); scriptableObjectBase = ScriptableObject.CreateInstance(script.GetClass()) as ScriptableObjectBase; AssetDatabase.CreateAsset(scriptableObjectBase, path); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(ImportAssetOptions.ForceSynchronousImport); } Debug.Log(string.Format("[Scriptable Asset] is Create.\nFile:[{0}] Path:[{1}]", scriptableAssetName, m_config.GetScriptableAssetPath())); return(scriptableObjectBase.LoadGameTable()); }
public void Register(Type type, ScriptableObjectBase dataBase) { if (!m_tableList.ContainsKey(type)) { m_tableList.Add(type, dataBase); } else { // 由于在editor下打开另一个场景,会导致ScriptableObject会被destroy,所以做一下保护 m_tableList[type] = dataBase; } }
public static TablePanelScriptable Get() { TablePanelScriptable t = ClientDataBaseManager.Instance.GetLoadedTable <TablePanelScriptable>(); if (t == null) { ScriptableObjectBase scriptable = ClientDataBaseManager.Instance.LoadTable(m_gameTableName); ClientDataBaseManager.Instance.Register(typeof(TablePanelScriptable), scriptable); return(ClientDataBaseManager.Instance.GetLoadedTable <TablePanelScriptable>()); } return(t); }
void UpdateAsset() { foreach (Object go in m_objList) { ScriptableObjectBase script = (ScriptableObjectBase)go; if (script.LoadGameTable() == false) { continue; } } m_startCreate = false; }
private void LoadFile(string strPath) { //if (Directory.Exists(strPath)) { foreach (var v in m_dic) { var temp = Resources.Load(strPath + v.Key, v.Value); ScriptableObjectBase tempObject = temp as ScriptableObjectBase; m_dictObjs.Add(v.Value, tempObject); tempObject.FillDic(); } } }
public T2 GetData <T1, T2>(uint uIndex) where T1 : ScriptableObjectBase where T2 : ObjectBase { Type objType = typeof(T1); ScriptableObjectBase obj = null; if (m_dictObjs.TryGetValue(objType, out obj)) { if (obj != null) { T2 data = obj.GetData <T2>(uIndex); return(data); } } return(default(T2)); }