Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
        /// <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());
        }
Exemplo n.º 3
0
 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;
     }
 }
Exemplo n.º 4
0
    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;
        }
Exemplo n.º 6
0
 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();
         }
     }
 }
Exemplo n.º 7
0
    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));
    }