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

扫一扫,访问微社区

教程分享

关注:560

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

查看: 75|回复: 5

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

[复制链接]  [移动端链接]
4四处流浪
467/500
排名
6021
昨日变化
72

22

主题

70

帖子

467

积分

Rank: 4

UID
133481
好友
2
蛮牛币
3256
威望
0
注册时间
2016-1-4
在线时间
237 小时
最后登录
2017-1-20
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没写在协程里,是因为这个方法其实是个虚方法,我只是在我的代码里实现了而已,在协程里肯定更好~~


回复

使用道具 举报

2初来乍到
138/150
排名
11396
昨日变化
237

1

主题

19

帖子

138

积分

Rank: 2Rank: 2

UID
151251
好友
0
蛮牛币
99
威望
0
注册时间
2016-6-7
在线时间
76 小时
最后登录
2017-1-21
发表于 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);
        }
    }

回复 支持 反对

使用道具 举报

4四处流浪
467/500
排名
6021
昨日变化
72

22

主题

70

帖子

467

积分

Rank: 4

UID
133481
好友
2
蛮牛币
3256
威望
0
注册时间
2016-1-4
在线时间
237 小时
最后登录
2017-1-20
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里封装的,而且没有留接口,我不知道怎么能调到这

回复 支持 反对

使用道具 举报

2初来乍到
138/150
排名
11396
昨日变化
237

1

主题

19

帖子

138

积分

Rank: 2Rank: 2

UID
151251
好友
0
蛮牛币
99
威望
0
注册时间
2016-6-7
在线时间
76 小时
最后登录
2017-1-21
发表于 6 天前 | 显示全部楼层
OoSoSoO 发表于 2017-1-13 12:00
我知道可以用回调,但是我的这个项目引用的外部的dll,方法在dll里封装的,而且没有留接口,我不知道怎么 ...

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

回复 支持 反对

使用道具 举报

4四处流浪
467/500
排名
6021
昨日变化
72

22

主题

70

帖子

467

积分

Rank: 4

UID
133481
好友
2
蛮牛币
3256
威望
0
注册时间
2016-1-4
在线时间
237 小时
最后登录
2017-1-20
QQ
 楼主| 发表于 6 天前 | 显示全部楼层
ObjOne 发表于 2017-1-15 09:49
dll 不能用ilspy反编译看看源码 吗?

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

回复 支持 反对

使用道具 举报

2初来乍到
138/150
排名
11396
昨日变化
237

1

主题

19

帖子

138

积分

Rank: 2Rank: 2

UID
151251
好友
0
蛮牛币
99
威望
0
注册时间
2016-6-7
在线时间
76 小时
最后登录
2017-1-21
发表于 6 天前 | 显示全部楼层
OoSoSoO 发表于 2017-1-15 11:37
那难道反编译之后把他源码再修改了再用么

没有办法的办法

回复 支持 反对

使用道具 举报

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

本版积分规则

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