unity PC端 本地路径加载FBX模型、图片、文档爬坑经验


需求是本地可替换模型,图片,文档,最后发布EXE程序。

在网上找了好多资料都零零散散的,自己拼来拼去各种坑累成狗,现在把经验记录下来,希望大家少采坑。

1.本地路径加载

  路径加载使用:Application.persistentDataPath 这个是一个本地可读写路径,默认位置在:

C:/Users/Administrator/AppData/LocalLow/DefaultCompany/项目名称

2.本地加载文档:

  使用时这样写,用WWW调用,现在WWW过时了,改为UnityWebRequest,但是www不影响使用;

WWW www1 = new WWW("file:///" + Application.persistentDataPath + "/name01.txt");
name.text = www1.text;

这里有个坑,不加"file:///" 的话在编辑器里可以正常调用,发布为EXE的时候就不能了,而且还必须是三道杠,两道还不行。

在类型转换的时候还有个坑,文本内容是8889,赋值的时候提示需要将string类型转换为int,代码为:

udpserver.udp端口 = Convert.ToInt32(www.text);

按道理没问题,结果运行的时候unity老报错,提示string类型输入不规范,折腾了好几个小时,后来就打印了一下www.text的长度,显示为5,

明明只有4位,就是显示5位,想了想,不知道在哪里搜索的时候有网友建议TXT文档编码要为UTF-8,就这里改动过,就把UTF-8改回ANSI,

再打印www.text的长度,显示为4,这下正常了,代码也没报错。

3.本地加载模型FBX

加载模型也是搜索了不少资料,各种对比下来,还是使用TriLib插件比较靠谱,插件官网地址 https://ricardoreis.net/ 使用方法也很简单,

将插件拷贝进unity工程,在unity工程里新建C#脚本,将下列代码复制进Start(),注意faircraft09.fbx这个是路径文件夹里的模型文件,可根据自身模型重新命名!

var assetLoader = new AssetLoader();
var assetLoaderOptions = AssetLoaderOptions.CreateInstance();
var wrapperGameObject = gameObject;
var myGameObject = assetLoader.LoadFromFile(Application.persistentDataPath + "/faircraft09.fbx", assetLoaderOptions,wrapperGameObject);

把脚本拖进空物体的组建面板,运行的时候在空物体的子级就会出现加载的模型,可谓简单高效!

3.本地加载图片

按照需求需要替换精灵图片,使用路径加载,先开协程:

    IEnumerator GetTexture01(string url)
    {
        WWW www1 = new WWW(url);
        yield return www1;
        if (www1.isDone && www1.error == null)
        {
            img01 = www1.texture;
            sprite01 = Sprite.Create(img01, new Rect(0, 0, img01.width, img01.height), new Vector2(0.5f, 0.5f));
            scene01.AddComponent<SpriteRenderer>().sprite = sprite11;
        }
    }

再在Start()里开始协程:

StartCoroutine(GetTexture01("file:///"+Application.persistentDataPath + "/Icon01.png"));

这里也有个坑,因为要改变精灵的组件内容,所以使用 AddComponent<SpriteRenderer> 但是原有的SpriteRenderer组件本身还在,就会显示不了图片,

正确做法是把原有的SpriteRenderer组件删除,变成空物体,代码里会增加SpriteRenderer组件,这样就不会冲突,显示也正常了。

以上就是本地路径加载发布PC端EXE文件遇到的一些坑。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM