unity3d有办法用任何方法弄出一个TextAsset 吗?


是这样的,我在汉化某个恶心的游戏, 然后这个游戏是用unity3d做的,GUI用了EZGUI。默认的字库里面没有中文,所以我们不得不通过插件手动替换字体。 但是EZGUI用的bitmap font,好吧,这就算了,问题在于,SpriteText.SetFont (UnityEngine.TextAsset newFont, UnityEngine.Material fontMaterial) 也就是,这里不吃string,要一个TextAsset。那么,我的问题是,有没有办法在plugins里面,通过某个手段,加载一个txt文件为TextAsset。这个txt文件可以通过标准的IO方式读入,但是那样是string的。

我尝试修改u3d的TextAsset类,把TextAsset.get_text设成虚函数,然后有了如下代码:


 public class MyTextAss : TextAsset{

    public byte[] cbytes;

    public override byte[] bytes

    {

        get{

            return cbytes;

        }

    } 

    public string ctext;

    public override string text

    {

        get{

            return ctext;

        }

    }

    public override string ToString()

    {

        return this.text;

    }

}

但是,这样的代码,在:


 public TextAsset fontDef(){

        MyTextAss mtass = new MyTextAss();

        mtass.ctext = System.IO.File.ReadAllText (sFilePath);

        mtass.cbytes = System.IO.File.ReadAllBytes (sFilePath);

        return mtass;

    }

的时候,导致了整个函数返回null!这又是为什么,能通过这样的手段解决问题吗?(EZGUI只用到了text,别的都没有用到) sFilePath是修正了的文件地址,肯定能读到。

unity3d c#

姐给你kj 10 years, 5 months ago

TextAsset本来就是指txt文件,你把txt文件放到Resource文件夹下面,然后加载不就行了嘛 文件名为a.txt


 TextAsset ts =(TextAsset)Resources.Load("a");

提不起劲叶子 answered 10 years, 5 months ago

Your Answer