本文共 2298 字,大约阅读时间需要 7 分钟。
首先我们需要一张字体图片:
在创建text,将刚才自定义的字体拖入font即可
AssetDatabase.GetAssetPath(object)
该object在assets下的路径,返回stringAssetDatabase.LoadAssetAtPath< T>(string fontPath)
加载该object的路径,返回TAssetDatabase.LoadAllAssetsAtPath(path);
//加载该路径下的所有资源,返回Object[]AssetDatabase.CreateAsset(object, string matPath);
在对应路径下创建object,无返回值//保存资源
AssetDatabase.SaveAssets();//更新asset修改的资源
AssetDatabase.Refresh();用来修改自定义字体面版的一些属性
代码:
using System.Collections;using System.Collections.Generic;using System.IO;using UnityEditor;using UnityEngine;public class XFImageFontMaker : MonoBehaviour{ //MenuItem可以让我们在asset下的物体右键执行指定方法 [MenuItem("Assets/XFCreateImageFont")] static void XFCreateImageFont() { if (Selection.objects == null) return; for(int i=0;i(fontPath); if(font==null) { font = new Font(); //创建材质修改shader Material mat = new Material(Shader.Find("GUI/Text Shader")); //_MainTex为设置游戏对象的主纹理 mat.SetTexture("_MainTex", texture); //在文件夹里创建材质 AssetDatabase.CreateAsset(mat, matPath); font.material = mat; //在文件夹里创建字体 AssetDatabase.CreateAsset(font, fontPath); } //设置字符 Sprite[] sprites = LoadSpriteByPath(texturePath); if(sprites.Length==0) { print("没有发现创建的字符,请分割一下字符"); return; } CharacterInfo[] characterInfos = new CharacterInfo[sprites.Length]; for(int i=0;i sprites = new List (); //加载该路径下的所有资源 Object[] objects = AssetDatabase.LoadAllAssetsAtPath(path); for(int i=0;i
操作:
勾选图片数字1的Advanced->Read/write enabled
再对数字一图片,右键点击刚才的脚本
缺点:
1.这种方式无法修改字符大小 2.只能对ascii码表里的字符生效转载地址:http://jkv.baihongyu.com/