private TMP_FontAsset Setup(TMP_FontAsset f) { var originalFont = _cachedTekoFont; var matCopy = UnityEngine.Object.Instantiate(originalFont.material); matCopy.mainTexture = f.material.mainTexture; matCopy.mainTextureOffset = f.material.mainTextureOffset; matCopy.mainTextureScale = f.material.mainTextureScale; f.material = matCopy; f = UnityEngine.Object.Instantiate(f); MaterialReferenceManager.AddFontAsset(f); return(f); }
public CostumeBuilder CostumeSprite(String name, Sprite sprite, float width, float height) { AddStep("COSTUME_SPRITE", (handler) => { // set texture var spriteAsset = ScriptableObject.CreateInstance <TMP_SpriteAsset>(); spriteAsset.spriteInfoList = new List <TMP_Sprite>(); spriteAsset.spriteInfoList.Add(new TMP_Sprite() { name = "ui_icon_entertainer_" + name, unicode = 0, scale = 1.0f, sprite = sprite, height = height, width = width, pivot = new Vector2(0, 0), x = 0, y = 0, yOffset = height, xAdvance = width }); spriteAsset.spriteSheet = sprite.texture; ShaderUtilities.GetShaderPropertyIDs(); Material material = new Material(Shader.Find("TextMeshPro/Sprite")); material.SetTexture(ShaderUtilities.ID_MainTex, spriteAsset.spriteSheet); material.hideFlags = HideFlags.HideInHierarchy; spriteAsset.material = material; spriteAsset.hashCode = TMP_TextUtilities.GetSimpleHashCode("ui_icon_entertainer_" + name); typeof(TMP_SpriteAsset).GetField("m_FaceInfo", BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic) ?.SetValue(spriteAsset, FontEngine.GetFaceInfo()); spriteAsset.UpdateLookupTables(); MaterialReferenceManager.AddSpriteAsset(spriteAsset); handler.Target.costumeSpriteName = name; handler.Target.customeSprite = sprite; }); return(this); }