Ejemplo 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);
    }
Ejemplo 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());
        }
        void UpdateAsset()
        {
            foreach (Object go in m_objList)
            {
                ScriptableObjectBase script = (ScriptableObjectBase)go;

                if (script.LoadGameTable() == false)
                {
                    continue;
                }
            }
            m_startCreate = false;
        }