界面NGUI制作UI界面打开太慢解决方法

网页打开慢的解决方法  时间:2021-01-24  阅读:()

NGUI制作UI界面打开太慢解决办法

Uniyt3 D利用NGUI打开界面太慢了起初一直以为是 unity的问题最近经过我的全面测试我发现这和un it y没有关系。

一般一个比较复杂的界面大概需要 150个GameObj ect?或者UlSprite 。

我用N GUI直接载入发现竟然需要250多毫秒仅仅只是两张小图。 同样的 Ga meO bj ec t我用unity2 d的Sprite载入只需要70多毫米可见Unity2d的效率要比NGUI高多少。我可能说的不完全对 因为U3 D是闭源的我只能猜测。

再普及一下基础知识

GameObject go=GameObject.Instantiate(Resources.Load( “prefabName”))as GameObject;go.AddComp onen t<Test>();

我想上面这一行代码大家应该再也熟悉不过了。实例化一个 Pre fab然后给它身上帮一条脚本。如下图所示我用的是 红米作为测试机器。

实例化对象我们可以拆成 4部分。我用NGUI加载了150个UlSpirte=41+4+30+194=269 毫秒,一般打开界面超过500毫秒的话用户就会明显感觉卡顿了。

Reso urc es.Load是一个”同步”耗时操作 Unity内部维护了资源的内存池但是调用Load的时候Unity会自动的把Pre fab上所引

用的资源在加入内存池它不会重复加载资源。

也就是说当你加载相同的 UIAtla s的时候只会第一次比较卡。你可以试试一些线上的 unity游戏一般第一次打开某界面的时候要比以后打开此界面时间长一些。

很多人认为加载慢的原因罪魁祸首是 In sta ntiate()。其实我告诉你它的时间反而是最快的上面的截图我相信就是最好的证明。

第一次In sta nt ia te要比以后执行I ns ta nt iate要慢一些可能Unity在做一些特殊处理吧。

3.第一次添加脚本

添加脚本一般会有两种形式第一种是通过 AddCompo nent<Script> 的形式把脚本添加给游戏对象还有一种是你的Pre fab天生就带着这个脚本。

无论哪种加载时间都是一样的。第一次加载脚本要比以后加载慢我觉得应该是和 Resources缓存池的原理一样吧。

4.第二次以后的GameObj ect.lnstantiate和

AddComp onent<S cript>

GameObject.Instantiate 就不用说了它载入很快这里要详细的说说 Script。

AddCo mponent<Scrip t> 以后或者 Pre fab上预先绑定的脚本。当你 GameObject.lnstantiate() 同步方法执行的时候并不是把脚本挂上去就完了而它要等脚本里面的一些方法执行完毕才算结束。

脚本中有两个很典型的方法 Awake和O nEnab le。当P re fab用I nstantiate()方法载入的时候它的脚

本必须执行完Awak e和OnEnab le两个方法以后才算完整载入。

那么如果你的脚本这里面有一些耗时操作那么必然载入会慢了。 。void Awake()

{for(int i=0;i<1000; i++)

{

}

}void OnEn able()

{for(int i=0;i<1000; i++)

{

}

如果你在Awake()或者O nEnab le()方法里面继续去实例化对象继续绑定脚本那么依然还需要把新实

例化对象的Awake()和O nEnab le()方法执行完毕才会结束。 。 。

这里并没有完还有一个地方也会引起打开界面慢。代码中用 Pub ilc声明的对象然后是在编辑器拖拽赋值。public GameObject go;

拖拽赋值如果是资源很大的话 unity需要load然而loa d就是一个同步耗时操作那么它也会影响打

开界面的时间。

如下图所示 NGUI里面UISprite UlTexture UILabe 这三个脚本上面都有 pub lic绑定的对象。 NGUI打开界面慢的罪魁祸首就在这里我尝试把 pub lic绑定的代码全部取消 发现20几毫秒就载入完成了。 。 。 知道原因了但是我们也没办法 因为不能随便乱改它的代码。 。 

一定要把一个界面的所有 GameObj ec t做成一个Pre fab有些人不想用unity的Pre fab想通过一种规

则程序运行时利用GameObj e ct.Instantiate()?和AddC o mpo ne nt<S cript>? 来生成界面的树状结构。我做过测试如果单纯加载一个Pre fab和代码动态生成对应树状结构 前者要比后者快30%左右。所以如果做UI编辑器的话一定要先把 Pre fab生成出来一定要只加载一个 Pre fab。

至于Unity的Sprite载入为什么要比NGUI的Sp rite载入快那么唯一可以解释的就是Unity可能后台用的是C语言而NGUI用的是纯C#从执行效率上C会快很多所以我们还是早日期待Unity可以自身完美的解决做界面的问题。 uni ty4.6预览版看起来很赞不过我更期待un ity5的到来。

最后我们在说说怎么让 NGUI打开界面的速度能快一些。

2.如果界面没法拆开那么就把界面的pre fab拆成多个 比如底框是一个P re fab  内容是一个Pre fab列表是一个Pre fab这样打开界面的时候用协同任务一个一个打开这样用户就不会感觉到界面卡顿了。

到这里在Unity3D中利用NGUI制作UI的过程中打开界面太慢的解决办法就全部说完了,查看更多Unity3D相关教程可以访问我学院网Unity教程相关标签

趣米云月付460元,香港CN2云服务器VPS月付低至18元

趣米云早期为做技术起家,为3家IDC提供技术服务2年多,目前商家在售的服务有香港vps、香港独立服务器、香港站群服务器等,线路方面都是目前最优质的CN2,直连大陆,延时非常低,适合做站,目前商家正在做七月优惠活动,VPS低至18元,价格算是比较便宜的了。趣米云vps优惠套餐:KVM虚拟架构,香港沙田机房,线路采用三网(电信,联通,移动)回程电信cn2、cn2 gia优质网络,延迟低,速度快。自行封...

免费注册宝塔面板账户赠送价值3188礼包适合购买抵扣折扣

对于一般的用户来说,我们使用宝塔面板免费版本功能还是足够的,如果我们有需要付费插件和专业版的功能,且需要的插件比较多,实际上且长期使用的话,还是购买付费专业版或者企业版本划算一些。昨天也有在文章中分享年中促销活动。如今我们是否会发现,我们在安装宝塔面板后是必须强制我们登录账户的,否则一直有弹出登录界面,我们还是注册一个账户比较好。反正免费注册宝塔账户还有代金券赠送。 新注册宝塔账户送代金券我们注册...

创梦云 香港沙田、长沙联通2核1G仅需29元一个月 挂机宝7元一个月

商家介绍:创梦云是来自国内的主机销售商,成立于2018年4月30日,创梦云前期主要从事免备案虚拟主机产品销售,现在将提供5元挂机宝、特惠挂机宝、香港云服务器、美国云服务器、低价挂机宝等产品销售。主打高性价比高稳定性挂机宝、香港云服务器、美国云服务器、香港虚拟主机、美国虚拟主机。官方网站:http://cmy0.vnetdns.com本次促销产品:地区CPU内存硬盘带宽价格购买地址香港特价云服务器1...

网页打开慢的解决方法为你推荐
qq空间首页QQ空间主页怎么弄?天玑1000plus和骁龙865哪个好CPU型号 MediaTek MT6853 5G,和天玑1000+哪个好?天玑1000plus和骁龙865哪个好麒麟985处理器和天玑1000处理器哪个更好?天玑1000plus和骁龙865哪个好哪种5G手机是联发科天玑1000芯片?江门旅游景点哪个好玩的地方江门有哪些旅游景点,江门哪里好玩小说软件哪个好用免费现在看小说用什么软件好?宝来和朗逸哪个好新宝来和新朗逸选哪个?好纠结!!手机杀毒软件哪个好手机用杀毒软件,用哪样的好手机浏览器哪个好用手机哪个浏览器最好用播放器哪个好手机本地视频播放器哪个好用
便宜vps 老域名全部失效请记好新域名 sharktech 漂亮qq空间 pw域名 omnis 香港机房托管 permitrootlogin 淘宝双十一2018 xfce 地址大全 免费ddos防火墙 蜗牛魔方 静态空间 稳定免费空间 网通服务器托管 息壤代理 paypal注册教程 国外视频网站有哪些 东莞服务器托管 更多