开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

教程分享

关注:578

当前位置:游戏蛮牛 技术专区 教程分享

查看: 173|回复: 5

[自学总结] 使用WWW加载资源时,判断加载完之后再执行别的函数

[复制链接]  [移动端链接]
5熟悉之中
564/1000
排名
5206
昨日变化
40

26

主题

87

帖子

564

积分

Rank: 5Rank: 5

UID
133481
好友
2
蛮牛币
3363
威望
0
注册时间
2016-1-4
在线时间
279 小时
最后登录
2017-2-23

迈向小康

QQ
发表于 2017-1-12 14:02:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
最近在项目中,遇到了一个问题,动态加载本地的模型,然后贴图是在服务器上的,需要用WWW获取。。但是加载模型的代码不是我写的,我需要在WWW时用isDone中执行的一些代码我调用不了~~所以就导致了,图片还没下载完,就要往材质球上附,然后就没有了。。。
被这个事儿烦了好几天,想多很多办法,最终试出来一种,在WWW之后,用while循环判断isDone。。。哈哈
具体代码如下:
[C#] 纯文本查看 复制代码
protected Texture2D CreateImageObj(string src)
{
        var url = src;
        WWW www = new WWW(url);
        Texture2D m_Texture = null;
         while (!www.isDone)
         {
         }
         m_Texture = new Texture2D([url]www.texture.width[/url], [url]www.texture.height[/url]);
         www.LoadImageIntoTexture(m_Texture);
         www.Dispose();
         return m_Texture;
}

while(!www.isDone)的括号里面啥也不用写,如果不加载完,就不执行下面的代码,加载完之后才开始给m_Texture赋值,然后返回Texture,也算是个小技巧吧。
还有为什么我的WWW没写在协程里,是因为这个方法其实是个虚方法,我只是在我的代码里实现了而已,在协程里肯定更好~~


回复

使用道具 举报

3偶尔光临
224/300
排名
8442
昨日变化
115

1

主题

26

帖子

224

积分

Rank: 3Rank: 3Rank: 3

UID
151251
好友
0
蛮牛币
177
威望
0
注册时间
2016-6-7
在线时间
119 小时
最后登录
2017-2-23

一贫如洗

发表于 2017-1-13 10:56:37 | 显示全部楼层
public IEnumerator GetPic(string url, Action<Texture2D> fun)
    {
        WWW w3 = new WWW(url);
        yield return w3;
        if (w3.isDone && string.IsNullOrEmpty(w3.error))
        {
            fun(w3.texture);
        }
    }

回复 支持 反对

使用道具 举报

5熟悉之中
564/1000
排名
5206
昨日变化
40

26

主题

87

帖子

564

积分

Rank: 5Rank: 5

UID
133481
好友
2
蛮牛币
3363
威望
0
注册时间
2016-1-4
在线时间
279 小时
最后登录
2017-2-23

迈向小康

QQ
 楼主| 发表于 2017-1-13 12:00:47 | 显示全部楼层
ObjOne 发表于 2017-1-13 10:56
public IEnumerator GetPic(string url, Action fun)
    {
        WWW w3 = new WWW(url);

我知道可以用回调,但是我的这个项目引用的外部的dll,方法在dll里封装的,而且没有留接口,我不知道怎么能调到这

回复 支持 反对

使用道具 举报

3偶尔光临
224/300
排名
8442
昨日变化
115

1

主题

26

帖子

224

积分

Rank: 3Rank: 3Rank: 3

UID
151251
好友
0
蛮牛币
177
威望
0
注册时间
2016-6-7
在线时间
119 小时
最后登录
2017-2-23

一贫如洗

发表于 2017-1-15 09:49:03 | 显示全部楼层
OoSoSoO 发表于 2017-1-13 12:00
我知道可以用回调,但是我的这个项目引用的外部的dll,方法在dll里封装的,而且没有留接口,我不知道怎么 ...

dll 不能用ilspy反编译看看源码 吗?

回复 支持 反对

使用道具 举报

5熟悉之中
564/1000
排名
5206
昨日变化
40

26

主题

87

帖子

564

积分

Rank: 5Rank: 5

UID
133481
好友
2
蛮牛币
3363
威望
0
注册时间
2016-1-4
在线时间
279 小时
最后登录
2017-2-23

迈向小康

QQ
 楼主| 发表于 2017-1-15 11:37:13 | 显示全部楼层
ObjOne 发表于 2017-1-15 09:49
dll 不能用ilspy反编译看看源码 吗?

那难道反编译之后把他源码再修改了再用么

回复 支持 反对

使用道具 举报

3偶尔光临
224/300
排名
8442
昨日变化
115

1

主题

26

帖子

224

积分

Rank: 3Rank: 3Rank: 3

UID
151251
好友
0
蛮牛币
177
威望
0
注册时间
2016-6-7
在线时间
119 小时
最后登录
2017-2-23

一贫如洗

发表于 2017-1-15 14:14:37 | 显示全部楼层
OoSoSoO 发表于 2017-1-15 11:37
那难道反编译之后把他源码再修改了再用么

没有办法的办法

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表