private void OnEnable()
 {
     ConsoleContent = string.Empty;
     TextureSource  = null;
     TPTextSheet    = null;
     RichTextAsset  = null;
     InitGUIStyle();
 }
    private static void AddDefaultMaterial(RichTextSpriteAsset spriteAsset)
    {
        Shader   shader   = Shader.Find("UI/Default");
        Material material = new Material(shader);

        material.SetTexture("_MainTex", spriteAsset.spriteSheet);
        spriteAsset.material = material;
        material.hideFlags   = HideFlags.HideInHierarchy;
        AssetDatabase.AddObjectToAsset(material, spriteAsset);
    }
Пример #3
0
 /// <summary>
 /// 设置图集
 /// </summary>
 /// <param name="spriteAsset"></param>
 public void SetSpriteAsset(RichTextSpriteAsset spriteAsset)
 {
     m_TextSpriteAssett = spriteAsset;
 }
    private void SaveSpriteAsset(string filePath)
    {
        filePath = filePath.Substring(0, filePath.Length - 6);
        string dataPath = Application.dataPath;

        if (filePath.IndexOf(dataPath, StringComparison.InvariantCultureIgnoreCase) == -1)
        {
            Debug.LogError("You're saving the font asset in a directory outside of this project folder. This is not supported. Please select a directory under \"" + dataPath + "\"");
            return;
        }
        string path                     = filePath.Substring(dataPath.Length - 6);
        string directoryName            = Path.GetDirectoryName(path);
        string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(path);
        string str = directoryName + "/" + fileNameWithoutExtension;

        if (!File.Exists(filePath + ".asset"))
        {
            this.RichTextAsset = ScriptableObject.CreateInstance <RichTextSpriteAsset>();
            AssetDatabase.CreateAsset(this.RichTextAsset, str + ".asset");
        }
        else
        {
            this.RichTextAsset = AssetDatabase.LoadAssetAtPath <RichTextSpriteAsset>(str + ".asset");
            if (this.RichTextAsset == null)
            {
                this.RichTextAsset = ScriptableObject.CreateInstance <RichTextSpriteAsset>();
                AssetDatabase.CreateAsset(this.RichTextAsset, str + ".asset");
            }
        }

        this.RichTextAsset.hashCode       = this.RichTextAsset.name.GetHashCode();
        this.RichTextAsset.spriteSheet    = this.TextureSource;
        this.RichTextAsset.spriteInfoList = this.RichTextSpriteInfoList;
        this.RichTextAsset.animateList.Clear();
        if (this.RichTextAnimateDic != null && this.RichTextAnimateDic.Count > 0)
        {
            foreach (var keyValue in RichTextAnimateDic)
            {
                keyValue.Value.m_SpriteList.Sort((a, b) =>
                {
                    if (a.animatIndex == b.animatIndex)
                    {
                        return(0);
                    }
                    return(a.animatIndex > b.animatIndex ? 1 : -1);
                });
                this.RichTextAsset.animateList.Add(keyValue.Value);
            }
        }

        AddDefaultMaterial(this.RichTextAsset);

        EditorUtility.SetDirty(this.RichTextAsset);
        AssetDatabase.Refresh();
        AssetDatabase.SaveAssets();
        if (Application.isPlaying)
        {
            UnityEditor.SceneManagement.EditorSceneManager.MarkAllScenesDirty();
        }

        this.RichTextAnimateDic     = null;
        this.RichTextSpriteInfoList = null;
    }