如何在Unity中通过www方式unity加载外部www视频文件

Unity资源路径及加载外部资源介绍 - 博客频道 - CSDN.NET
appppppen的博客
Unity3D中的资源路径
Application.dataPath
此属性用于返回程序的数据文件所在文件夹的路径。例如在Editor中就是Assets了。
Application.streamingAssetsPath
此属性用于返回流数据的缓存目录,返回路径为相对路径,适合设置一些外部数据文件的路径。放在Unity工程StreamingAssets文件夹中的资源发布后都可以通过这个路径读取出来。
Application.persistentDataPath
此属性用于返回一个持久化数据存储目录的路径,可以在此路径下存储一些持久化的数据文件。
Application.temporaryCachePath
此属性用于返回一个临时数据的缓存目录。
Unity3D中的资源的处理种类
Unity中的资源资源的处理种类大致分为:Resources、StreamingAssets、AssetBundle、PersistentDataPath 四类。
是作为一个Unity的保留文件夹出现的,也就是如果你新建的文件夹的名字叫Resources,那么里面的内容在打包时都会被无条件的打到发布包中。
只读,即不能动态修改。所以想要动态更新的资源不要放在这里。会将文件夹内的资源打包集成到.asset文件里面。因此建议可以放一些Prefab,因为Prefab在打包时会自动过滤掉不需要的资源,有利于减小资源包的大小。资源读取使用Resources.Load()。
StreamingAssets
StreamingAssets和Resources很像。同样作为一个只读的Unity3D的保留文件夹出现。不过两者也有很大的区别,那就是Resources文件夹中的内容在打包时会被压缩和加密。而StreamingAsset文件夹中的内容则会原封不动的打入包中,因此StreamingAssets主要用来存放一些二进制文件。
只读不可写。主要用来存放二进制文件。只能用过WWW类来读取。
AssetBundle
AssetBundle就是把prefab或者二进制文件封装成AssetBundle文件。
是Unity3D定义的一种二进制类型。使用WWW类来下载。
PersistentDataPath
这个路径下是可读写。而且在IOS上就是应用程序的沙盒,但是在Android可以是程序的沙盒,也可以是sdcard。并且在Android打包的时候,ProjectSetting页面有一个选项Write Access,可以设置它的路径是沙盒还是sdcard。
内容可读写,不过只能运行时才能写入或者读取。&提前将数据存入这个路径是不可行的。无内容限制。你可以从 StreamingAsset 中读取二进制文件或者从 AssetBundle 读取文件来写入 PersistentDataPath 中。写下的文件,可以在电脑上查看。同样也可以清掉。需要使用WWW类来读取。
android平台
Application.dataPath
/data/app/xxx.xxx.xxx.apk
Application.streamingAssetsPath
jar:file:///data/app/xxx.xxx.xxx.apk/!/assets
Application.persistentDataPath
/data/data/xxx.xxx.xxx/files
Application.temporaryCachePath
/data/data/xxx.xxx.xxx/cache
Application.dataPath
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data
Application.streamingAssetsPath
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/xxx.app/Data/Raw
Application.persistentDataPath
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Documents
Application.temporaryCachePath
Application/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/Library/Caches
资源文件的读取
接下来我们来介绍一下Resources、StreamingAssets、AssetBundle、PersistentDataPath这四个东东的读取方法。
首先我们新建一个Resources目录,并且并将资源放在这目录中。如图:
using UnityE
using System.C
using UnityEngine.UI;
public class LoadResources : MonoBehaviour {
void Start () {
image.overrideSprite = Resources.Load (&animotiong_2&, typeof(Sprite)) as S
StreamingAssets
首先我们新建一个StreamingAssets目录,并且并将资源放在这目录中。如图:
using UnityE
using System.C
public class LoadResources : MonoBehaviour {
void Start () {
StartCoroutine(LoadXML());
IEnumerator LoadXML() {
string sPath= Application.streamingAssetsPath + &/test.xml&;
WWW www = new WWW(sPath);
yield return
_result = www.
PersistentDataPath
之前我们说过,内容可读写,不过只能运行时才能写入或者读取。&提前将数据存入这个路径是不可行的。也就是说,PersistentDataPath是在运行时生成的,例如通过网络下载资源存在放PersistentDataPath中。
using UnityE
using System.C
public class LoadResources : MonoBehaviour {
void Start () {
StartCoroutine(LoadXML());
IEnumerator LoadXML() {
string sPath= Application.persistentDataPath + &/test.xml&;
sPath = &file://& + sP
WWW www = new WWW(sPath);
yield return
_result = www.
这加载方式看起来与StreamingAssets很相识,但是注意这里多了行sPath =
&file://& + sP这很重要!!想要通过WWW类加载PersistentDataPath必须使用file://协议实现加载。
本文90%的内容都是参考:
里面有讲述AssetBundle的加载方式。
排名:千里之外1832人阅读
Unity3D(150)
最近在做项目的过程中遇到这样的一个需求:玩家可以在游戏过程中进行实时存档,在存档过程中会保存当前游戏进度,同时会截取当前游戏画面并加载到游戏存档界面中。当下一次进入游戏的时候,将读取本地存档图片并加载到游戏界面中。这在单机游戏中是特别常见的一种功能,这里主要有两个关键点。首先是截取游戏画面,这个问题大家可以在《》这篇文章中找到答案。其次是从本地加载图片,因为这里要保证可读可写,因此传统的Resources.Load()方式和AssetBundle方式均无法实现这样的功能。那么怎样从外部加载图片到游戏中,这就是我们今天要讨论的内容啦。好了,这里介绍两种方法来实现这一目的。
喜闻乐见的WWW方式
喜闻乐见的WWW方式之所以喜闻乐见,这是因为这是我们最为熟悉的一种,我们都知道通过WWW可以从网络上加载文本、图片、音频等形式的内容,那么通过WWW能否加载本地外部(相对于应用程序)资源呢?答案是肯定的,这是因为WWW可以支持http和file两种协议。我们通常接触到的WWW默认都是指http协议,现在我们来说说file协议,该协议可以用来访问本地资源(绝对路径)。例如我们希望加载文件D:\TestFile\pic001.png这个文件,则此时对应的C#脚本为:
WWW www = new WWW(&file://D:\\TestFile\\pic001.png);
if(www != null && string.IsNullOrEmpty(www.error))
Texture texture=www.
注意到这里出现了yield return结构,这表示这里使用到了协程,因此我们需要付出的代价就是需要在项目中使用StartCoroutine等协程相关的方法来调用这些协程。虽然在Unity3D中使用协程是件简单的事情,可是如果我们随随便便地使用协程而不注意去维护这些协程,那么这些让我们引以为傲的简单代码可能就会变成我们痛苦不堪的无尽深渊。
亘古不变的传统IO方式
好了,下面我们隆重推出亘古不变的传统IO方式,这种方式相信大家都没有接触过,所以这里将这种方法和大家分享。既然是传统的IO方式,那么无非就是各种IO流的处理啦。好,我们一起来看下面这段代码:
FileStream fileStream = new FileStream(screen, FileMode.Open, FileAccess.Read);
fileStream.Seek(0, SeekOrigin.Begin);
byte[] bytes = new byte[fileStream.Length];
fileStream.Read(bytes, 0, (int)fileStream.Length);
fileStream.Close();
fileStream.Dispose();
fileStream = null;
int width=800;
int height=640;
Texture2D texture = new Texture2D(width, height);
texture.LoadImage(bytes);
可以看到在使用这种方式读取图片文件的时候主要是将图片文件转化为byte[]数组,再利用Texture2D的LoadImage方法转化为Unity3D中的Texture2D。这种方法需要在创建过程中传入图片的大小,在这里我们创建了一张800X640的图片。经过博主的研究发现,这种方式加载外部图片相对于使用WWW加载外部图片效率更高,所以如果大家遇到类似的需求,博主个人推荐大家使用这种方式进行加载。
到目前为止我们解决了如何从外部加载图片到Unity3D中,现在我们回到最开始的问题,我们从外部读取到这些图片以后需要将它们加载到游戏界面中。比如当我们使用UGUI的时候,UGUI中的Image控件需要一个Sprite来作为它的填充内容,那么此时我们就需要将Texture转化为Sprite.号了,下面我们给出一个简单的例子:
using UnityE
using System.C
using UnityEngine.UI;
using System.IO;
public class TestLoading : MonoBehaviour
void Start ()
image = this.transform.Find(&Image&).GetComponent&Image&();
this.transform.Find(&LoadByWWW&).GetComponent&Button&().onClick.AddListener
delegate(){LoadByWWW();}
this.transform.Find(&LoadByIO&).GetComponent&Button&().onClick.AddListener
delegate(){LoadByIO();}
以IO方式进行加载
private void LoadByIO()
double startTime = (double)Time.
FileStream fileStream = new FileStream(&D:\\test.jpg&, FileMode.Open, FileAccess.Read);
fileStream.Seek(0, SeekOrigin.Begin);
byte[] bytes = new byte[fileStream.Length];
fileStream.Read(bytes, 0, (int)fileStream.Length);
fileStream.Close();
fileStream.Dispose();
fileStream = null;
int width = 300;
int height = 372;
Texture2D texture = new Texture2D(width, height);
texture.LoadImage(bytes);
Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
image.sprite =
startTime=(double)Time.time-startT
Debug.Log(&IO加载用时:& + startTime);
以WWW方式进行加载
private void LoadByWWW()
StartCoroutine(Load());
IEnumerator Load()
double startTime = (double)Time.
WWW www = new WWW(&file://D:\\test.jpg&);
yield return
if(www != null && string.IsNullOrEmpty(www.error))
Texture2D texture=www.
Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), new Vector2(0.5f, 0.5f));
image.sprite =
startTime = (double)Time.time - startT
Debug.Log(&WWW加载用时:& + startTime);
现在我们运行程序可以发现两种方式均可以让图片加载进来,为了对比两种方式在执行效率上的高低,我们在脚本中加入了相关代码,通过对比可以发现使用IO方式加载一张227k的图片需要的时间为0s,而使用WWW方式加载需要0.0185s,因此传统的IO方式具有更高的效率,建议大家在遇到这类问题时尽可能地使用这种方式。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:329838次
积分:4564
积分:4564
排名:第5867名
原创:68篇
转载:187篇
译文:35篇
评论:86条
(2)(1)(4)(22)(23)(13)(30)(2)(40)(11)(3)(3)(22)(33)(14)(21)(1)(1)(1)(6)(3)(34)(1)在Unity3D中加载外部图片的两种方法
在Unity3D中加载外部图片的两种方法
各位朋友大家好,我是秦元培,欢迎大家关注我的博客。最近在做项目的过程中遇到这样的一个需求:玩家可以在游戏过程中进行实时存档,在存档过程中会保存当前游戏进度,同时会截取当前游戏画面并加载到游戏存档界面中。当下一次进入游戏的时候,将读取本地存档图片并加载到游戏界面中。这在单机游戏中是特别常见的一种功能,这里主要有两个关键点。首先是截取游戏画面,这个问题大家可以在这篇文章中找到答案。其次是从本地加载图片,因为这里要保证可读可写,因此传统的Resources.Load()方式和AssetBundle方式均无法实现这样的功能。那么怎样从外部加载图片到游戏中,这就是我们今天要讨论的内容啦。好了,这里介绍两种方法来实现这一目的。
喜闻乐见的WWW方式
喜闻乐见的WWW方式之所以喜闻乐见,这是因为这是我们最为熟悉的一种,我们都知道通过WWW可以从网络上加载文本、图片、音频等形式的内容,那么通过WWW能否加载本地外部(相对于应用程序)资源呢?答案是肯定的,这是因为WWW可以支持http和file两种协议。我们通常接触到的WWW默认都是指http协议,现在我们来说说file协议,该协议可以用来访问本地资源()。例如我们希望加载文件D:\TestFile\pic001.png这个文件,则此时对应的C#脚本为:
[AppleScript]
纯文本查看 复制代码
WWW www = new
WWW(&file://D:\\TestFile\\pic001.png);
yield return
null && string.IsNullOrEmpty(www.error))
&&&&//获取Texture
&&&&Texture texture=www.&&
&&&&//更多操作...&&&&&&
注意到这里出现了yield return结构,这表示这里使用到了协程,因此我们需要付出的代价就是需要在项目中使用StartCoroutine等协程相关的方法来调用这些协程。虽然在中使用协程是件简单的事情,可是如果我们随随便便地使用协程而不注意去维护这些协程,那么这些让我们引以为傲的简单代码可能就会变成我们痛苦不堪的无尽深渊。
亘古不变的传统IO方式
好了,下面我们隆重推出亘古不变的传统IO方式,这种方式相信大家都没有接触过,所以这里将这种方法和大家分享。既然是传统的IO方式,那么无非就是各种IO流的处理啦。好,我们一起来看下面这段代码:
[AppleScript]
纯文本查看 复制代码
//创建文件读取流
FileStream fileStream =
new FileStream(screen,
FileMode.Open, FileAccess.Read);
fileStream.Seek(0,
SeekOrigin.Begin);
//创建文件长度缓冲区
byte[] bytes =
new byte[fileStream.Length];
//读取文件
fileStream.Read(bytes,
0, (int)fileStream.Length);
//释放文件读取流
fileStream.Close();
fileStream.Dispose();
fileStream =
//创建Texture
int width=800;
int height=640;
Texture2D texture
= new Texture2D(width,
texture.LoadImage(bytes);
可以看到在使用这种方式读取图片文件的时候主要是将图片文件转化为byte[]数组,再利用Texture2D的LoadImage方法转化为中的Texture2D。这种方法需要在创建过程中传入图片的大小,在这里我们创建了一张800X640的图片。经过博主的研究发现,这种方式加载外部图片相对于使用WWW加载外部图片效率更高,所以如果大家遇到类似的需求,博主个人推荐大家使用这种方式进行加载。
到目前为止我们解决了如何从外部加载图片到Unity3D中,现在我们回到最开始的问题,我们从外部读取到这些图片以后需要将它们加载到游戏界面中。比如当我们使用UGUI的时候,UGUI中的Image控件需要一个来作为它的填充内容,那么此时我们就需要将Texture转化为Sprite.号了,下面我们给出一个简单的例子:
[AppleScript]
纯文本查看 复制代码
using UnityE
using System.C
using UnityEngine.UI;
using System.IO;
public class
TestLoading : MonoBehaviour
&/summary&
&&&&private Image
&&&&void Start
&&&&&&&&image
= this.transform.Find(&Image&).GetComponent&Image&();
&&&&&&&&//为不同的按钮绑定不同的事件
&&&&&&&&this.transform.Find(&LoadByWWW&).GetComponent&Button&().onClick.AddListener
&&&&&&&&&&&delegate(){LoadByWWW();}
&&&&&&&&);
&&&&&&&&this.transform.Find(&LoadByIO&).GetComponent&Button&().onClick.AddListener
&&&&&&&&&&delegate(){LoadByIO();}
&&&&&&&&);
以IO方式进行加载
&/summary&
&&&&private void LoadByIO()
&&&&&&&&double startTime
= (double)Time.
&&&&&&&&//创建文件读取流
&&&&&&&&FileStream fileStream
= new FileStream(&D:\\test.jpg&,
FileMode.Open, FileAccess.Read);
&&&&&&&&fileStream.Seek(0,
SeekOrigin.Begin);
&&&&&&&&//创建文件长度缓冲区
&&&&&&&&byte[] bytes
= new byte[fileStream.Length];
&&&&&&&&//读取文件
&&&&&&&&fileStream.Read(bytes,
0, (int)fileStream.Length);
&&&&&&&&//释放文件读取流
&&&&&&&&fileStream.Close();
&&&&&&&&fileStream.Dispose();
&&&&&&&&fileStream
&&&&&&&&//创建Texture
&&&&&&&&int width
&&&&&&&&int height
&&&&&&&&Texture2D texture
= new Texture2D(width,
&&&&&&&&texture.LoadImage(bytes);
&&&&&&&&//创建Sprite
&&&&&&&&Sprite sprite
= Sprite.Create(texture,
new Rect(0,
0, texture.width, texture.height),
new Vector2(0.5f,
&&&&&&&&image.sprite
&&&&&&&&startTime=(double)Time.time-startT
&&&&&&&&Debug.Log(&IO加载用时:&
+ startTime);
以WWW方式进行加载
&/summary&
&&&&private void LoadByWWW()
&&&&&&&&StartCoroutine(Load());
&&&&IEnumerator Load()
&&&&&&&&double startTime
= (double)Time.
&&&&&&&&//请求WWW
&&&&&&&&WWW www
= new WWW(&file://D:\\test.jpg&);
&&&&&&&&yield return
&&&&&&&&if(www !=
null && string.IsNullOrEmpty(www.error))
&&&&&&&&&&&&//获取Texture
&&&&&&&&&&&&Texture2D texture=www.
&&&&&&&&&&&&//创建Sprite
&&&&&&&&&&&&Sprite sprite
= Sprite.Create(texture,
new Rect(0,
0, texture.width, texture.height),
new Vector2(0.5f,
&&&&&&&&&&&&image.sprite
&&&&&&&&&&&&startTime
= (double)Time.time
&&&&&&&&&&&&Debug.Log(&WWW加载用时:&
+ startTime);
现在我们运行程序可以发现两种方式均可以让图片加载进来,为了对比两种方式在执行效率上的高低,我们在脚本中加入了相关代码,通过对比可以发现使用IO方式加载一张227k的图片需要的时间为0s,而使用WWW方式加载需要0.0185s,因此传统的IO方式具有更高的效率,建议大家在遇到这类问题时尽可能地使用这种方式。好了,今天的内容就是这样啦。
我的热门文章
即使是一小步也想与你分享16784人阅读
Unity3D(157)
今天要做一个移动平台的版本控制,先做一个前期的工作,就是从服务器端加载资源,然后读取到本地,再从本地读取资源。这里就以pc平台为例,移动平台也是一样,就是稍微做一点路径上的修改,下面是不同平台路径的预编译://不同平台下StreamingAssets的路径是不同的,这里需要注意一下。
public static readonly string PathURL =
#if UNITY_ANDROID
&jar:file://& + Application.dataPath + &!/assets/&;
#elif UNITY_IPHONE
Application.dataPath + &/Raw/&;
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR
//windows平台和web平台
&file://& + Application.dataPath + &/StreamingAssets/&;
#endif关于资源的打包不理解的,我在之前的博文中有介绍:,可以去看一下这篇文章。操作步骤:创建脚本,命名Text.cs,并且将其拖放到MainCamera中using UnityE
using System.C
using System.IO;
using System.Collections.G
public class Text : MonoBehaviour {
//文本中每行的内容
//皮肤资源,这里用于显示中文
public GUIS
void Start ()
print(&当前文件路径:&+Application.persistentDataPath);
//删除文件
DeleteFile(Application.persistentDataPath,&FileName.txt&);
//创建文件,共写入3次数据
CreateFile(Application.persistentDataPath,&FileName.txt&,&dingxiaowei&);
CreateFile(Application.persistentDataPath,&FileName.txt&,&丁小未&);
//CreateFile(Application.persistentDataPath ,&Filename.assetbundle&,&丁小未&);
//下载模型
StartCoroutine(loadasset(&http://192.168.1.180/3DShowResource/Products/AssetBundles/HX_DY02.assetbundle&));
//得到文本中每一行的内容
infoall = LoadFile(Application.persistentDataPath,&FileName.txt&);
//写入模型到本地
IEnumerator loadasset(string url)
WWW w = new WWW(url);
if (w.isDone)
byte[] model = w.
int length = model.L
//写入模型到本地
CreateModelFile(Application.persistentDataPath, &Model.assetbundle&, model,length);
void CreateModelFile(string path, string name, byte[] info, int length)
//文件流信息
FileInfo t = new FileInfo(path + &//& + name);
if (!t.Exists)
//如果此文件不存在则创建
sw = t.Create();
//如果此文件存在则打开
//sw = t.Append();
//以行的形式写入信息
//sw.WriteLine(info);
sw.Write(info, 0, length);
sw.Close();
sw.Dispose();
* path:文件创建目录
* name:文件的名称
info:写入的内容
void CreateFile(string path,string name,string info)
//文件流信息
FileInfo t = new FileInfo(path+&//&+ name);
if(!t.Exists)
//如果此文件不存在则创建
sw = t.CreateText();
//如果此文件存在则打开
sw = t.AppendText();
//以行的形式写入信息
sw.WriteLine(info);
sw.Close();
sw.Dispose();
* 读取文本文件
* path:读取文件的路径
* name:读取文件的名称
ArrayList LoadFile(string path,string name)
//使用流的形式读取
StreamReader sr =
sr = File.OpenText(path+&//&+ name);
}catch(Exception e)
//路径与名称未找到文件则直接返回空
ArrayList arrlist = new ArrayList();
while ((line = sr.ReadLine()) != null)
//一行一行的读取
//将每一行的内容存入数组链表容器中
arrlist.Add(line);
sr.Close();
sr.Dispose();
//将数组链表容器返回
//读取模型文件
IEnumerator LoadModelFromLocal(string path, string name)
string s =
#if UNITY_ANDROID
s = &jar:file://&+path+&/&+
#elif UNITY_IPHONE
s = path+&/&+
#elif UNITY_STANDALONE_WIN || UNITY_EDITOR
s = &file://&+path+&/&+
WWW w = new WWW(s);
if (w.isDone)
Instantiate(w.assetBundle.mainAsset);
* path:删除文件的路径
* name:删除文件的名称
void DeleteFile(string path,string name)
File.Delete(path+&//&+ name);
void OnGUI()
//用新的皮肤资源,显示中文
GUI.skin =
//读取文件中的所有内容
foreach(string str in infoall)
//绘制在屏幕当中
GUILayout.Label(str);
if (GUILayout.Button(&加载模型&))
StartCoroutine(LoadModelFromLocal(Application.persistentDataPath, &Model.assetbundle&));
}上面设计到文件流操作,还有就是Application.persistentDataPath,这里并没有用Application.DataPath,后者貌似在移动平台是找不到的,前者就是所谓的沙盒文件,具有读写权限。运行后的效果:这里演示了读取操作文本和打包文件,如果切换到移动平台可能中文字体无法显示,就需要做个字体即可,后面继续版本控制后续工作。补充:假设你的程序中已经预先将2进制文件做好,如下图所示,你需要把二进制文件放在StreamingAssets这个文件夹中,一定要放在这里。举个例子,放在StreamingAssets中二进制文件打包后,Unity会将这些二进制文件放置在对应平台下的路径下。所以根据不同平台,访问的路径是不一样的。切记,你的二进制文件一定要放在StreamingAssets !!!!!!0102&&&&&&&&string filepath = Application.dataPath +&/StreamingAssets&+&/my.xml&;03&0405&&&&&&string filepath = Application.dataPath +&/Raw&+&/my.xml&;06&0708&&&&&&string filepath = &jar:& + Application.dataPath + &!/assets/&+&/my.09&10&==================== 迂者 丁小未 CSDN博客专栏=================MyBlog:& & & & & & &MyQQ:Unity QQ群:& & & & cocos2dx QQ群:======================&相互学习,共同进步&===================
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1363712次
积分:18659
积分:18659
排名:第418名
原创:399篇
转载:221篇
评论:384条
我叫小未,网名Aladdin,主做U3D游戏程序,某普通本科学校毕业,但不甘于平庸,喜欢尝试,喜欢研究计算机技术,13年9月份开始工作,曾两年就职于巨人网络做游戏客户端程序,闲暇时间做过麦子学院在线讲师,做过独立开发,做过C#游戏服务器和.NET Web服务器,做过IOS原生开发,爱游戏,爱coding!
学习交流群:
unity3D:(满员),;
阅读:9066
文章:10篇
阅读:18458
文章:12篇
阅读:14881
文章:24篇
阅读:112881
文章:13篇
阅读:23273
文章:31篇
阅读:77429
文章:34篇
阅读:55236
文章:20篇
阅读:44270
(1)(1)(2)(9)(2)(1)(3)(3)(1)(2)(1)(1)(4)(2)(2)(1)(1)(1)(3)(1)(1)(3)(1)(4)(2)(6)(17)(12)(13)(17)(12)(24)(32)(58)(42)(12)(48)(126)(33)(2)(2)(13)(9)(15)(5)(12)(14)(17)(5)(1)(1)(17)(2)(2)

我要回帖

更多关于 unity 外部加载fbx 的文章

 

随机推荐