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

发布于 08-26 17:41 字数 1159 浏览 25 评论 0

是这样的,我在汉化某个恶心的游戏, 然后这个游戏是用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是修正了的文件地址,肯定能读到。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

GRAY°灰色天空2022-09-02 17:41:13

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

TextAsset ts =(TextAsset)Resources.Load("a");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文