Unity 5时代是否还有必要使用shiro吗NGUI

随笔档案(53)
文章档案(25)
@Updraft Studio@
good playboy.
阅读排行榜
评论排行榜unity5和NGUI无法兼容【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:78,830贴子:
unity5和NGUI无法兼容收藏
RT,我导入最新的NGUI运行的时候提示代码错误,咋整,而且OnGUI中GUI.后面没有了label啥的!
达内unity3d培训全程&实战教学&,unity3d金牌讲师授课.免费unity3d课程试听中!到达内unity3d学院学习unity3d,只需4个月速成unity3d游戏工程师.
因为u5的api全部是重写的,而ngui还用老版api,所以会报错。u5不再有gui、全部都是ui和ngui类似
NGUI 3.8可以用,你得重做了
已转UGUI,目前感觉良好旧项目请不要中途升级,新项目改用UGUI吧
登录百度帐号推荐应用unity4升级到unity5注意事项解析 - CSDN博客
unity4升级到unity5注意事项解析
这里搜罗总结了部分网友unity4升级到unity5出现的问题,总结一下,方便需要的时候查阅:
一. 如果发现升级中有脚本错误,请第一时间使用菜单:
Assets -& Run API Updater ...
升级前做好项目备份。如果用了版本管理,最好重新建一个代码库,别把5的项目Commit到4上,到时候回滚很麻烦。常见错误:一个内置的摄像机脚本,有个preview变量报错,把它改成 _preview即可。很多API的命名错误可以用Assets / Run API Updater解决。Shader会变,尤其是一些野生的从第三方拿来用的Shader。这个没办法,只能逐个找类似的替换。真正让人崩溃的是物理引擎,尤其是Joint相关的东西。这种大多发生的车辆类产品里。这个只能逐个去击破。把Joint的关节逐个拆分,找出问题所在。5.0最大的改动是Joint的Connect Anchor都需要重新设置。其它的想到再补充吧。感觉5.2还不太稳定,按照Unity的尿性,起码等到5.5以后才能真正稳定下来.
二.NGUI遇到的问题:
=====================================
额 这是最近遇到的一个比较严重的问题:
NGUI无法直接用新的AssetBundle机制更新,每次从包里Load带UI的prefab就会有类似
GameObject (named 'Sprite') references runtime script in scene file. Fixing!
的错误。论坛上也有类似的问题
至于问题发生的情况,以UISprite为例的话,是因为UI和Atlas不在一个AssetBundle里。
具体原因看 大概能理解了:
Loading streamed-scene will fail if exist game object that have component with a script property type and value is prefab's script.
Code: [Select]
class UISprite
[SerializeField] UIAtlas mAtlas; // It's prefab's script. Not works for AssetBundle
I changed the property type to GameObject(prefab) from Script(prefab's script).
Code: [Select]
class UIScript
[SerializeField] GameObject mAtlasPrefab; // for AB, use mAtlasPrefab.GetComponent&UIAtlas&()...
Other controls are same.
不过像链接里这么改NGUI底层的话有点太折腾(也可能是我没掌握精髓),所以我和同事准备尝试绕过UIAtlas这类序列化的脚本试试。
后来自己尝试了一种解决方案,就是把atlas.prefab打到引用到的AssetBundle里,然后atlas.mat和atlas.png单独打成一个包,这样每个panel打包后只会变大几KB,而又能正常使用atlas,一举两得~&img src=&/73b82e346c5d3092cce984cfb4aa602d_b.jpg& data-rawwidth=&890& data-rawheight=&508&
class=&origin_image zh-lightbox-thumb& width=&890& data-original=&/73b82e346c5d3092cce984cfb4aa602d_r.jpg&&
另外一些坑:
1、升Unity5有不少API改了,有的插件没事,不过动画那块的插件基本废掉了T T
2、渲染方面,现在知道一个alpha blend 会锁住alpha通道,试了好久没效果。。
这里给出了解决方法 主要是下面那句最后要加alpha:blend
#pragma surface surf NoLighting noambient **alpha:blend**
第一次升级的时候,系统会问你是否自动升级现有接口。我手欠就选择否,结果惨了,一大堆错误,我还真一个个跳出来解决掉了,看起来就是接口干净了,删除了很多余的。第二次我学乖了,再次升级的时候选择自动升级接口,完美的都给自动搞定了。
其实升级的主要目的是需要支持64位ios系统,这时候需要选择IL2CPP的生成方法,这个不能完全保证之前能正确编译执行的东西再IL2CPP中也能正确执行,多少有一些不一样的地方,还好Unity3D社区给力,仔细搜索下就能找到。我们遇到了这个问题
,找到了相应的解决办法,但是我不确定你是否会遇到和我们不一样的问题。
渲染的地方似乎有一些不同,我们之前在Unity4时候是没有问题的,但在Unity5的时候,在某些安卓机器上发现会出现雪花的错误,后来发现是最里面的一个摄像机必须要清理背景,不能选择Don‘t Clear。
Unity5终于正式发布了,我们也赶紧尝试着把现在的项目升级到Unity5.0,升级的过程遇到了不少问题,估计也是大家将来会遇到的,分享出来供大家参考
一、先说说Unity4.0 烘焙面板里常用的参数
&img data-rawheight=&463& data-rawwidth=&834& src=&/0c990c639cd1cbefc4ac_b.jpg& class=&origin_image zh-lightbox-thumb& width=&834& data-original=&/0c990c639cd1cbefc4ac_r.jpg&&
Quality烘焙质量一般会选择高
Bounces 反弹 这个值一般选1,如果选2,烘焙的时间会增长50%左右,所以设置这个值要谨慎。
SkyLight Intensity 天空光强度 这个一般我也不会设置的太高
BounceBoost 反弹增强,同一单位面积内增大光的反射数量,相比较来说,这个值增大会直接影响渲染时间。
BounceIntensity 增强光的反射强度
ContrastThreshold 对比度,这个只是偶尔会调。
下面是我烘焙大场景时用到的参数,基本是在效果和时间上达到了一个合理的平衡点。
&img data-rawheight=&502& data-rawwidth=&789& src=&/3df7d810d2fbdb230cc2d3c_b.jpg& class=&origin_image zh-lightbox-thumb& width=&789& data-original=&/3df7d810d2fbdb230cc2d3c_r.jpg&&
二、再说说Unity5.X,和4.X的区别,首先光照烘焙技术就不同,
Unity4.X版本采用的是Autodesk的Beast技术
Unity5.X版本采用的是PowerVR Ray Tracing和Enlighten技术,所以Lighting Window 面板里的参数差别就很大。
整体的参数介绍这个官网的网址里有,
我只说说常用的。
(一)Object面板
&img data-rawheight=&288& data-rawwidth=&327& src=&/da73ada7ae22d9fb0ac8d11ab2056307_b.jpg& class=&content_image& width=&327&&
Lightmap Static:必须把烘焙的物体设置成静态
Scale in Lightmap:数值的大小与该物体的表面积有关,这个值影响烘焙时间,值越大时间越长。(效果如下图)
Scale In Lightmap 设置成0.1时的效果
&img data-rawheight=&508& data-rawwidth=&835& src=&/1bb4abb6115_b.jpg& class=&origin_image zh-lightbox-thumb& width=&835& data-original=&/1bb4abb6115_r.jpg&&
Scale In Lightmap 改成1时的效果
&img data-rawheight=&551& data-rawwidth=&836& src=&/d67ade0f45b263d29ef4a_b.jpg& class=&origin_image zh-lightbox-thumb& width=&836& data-original=&/d67ade0f45b263d29ef4a_r.jpg&&
(这个值也影响光影图的数量)
Preserve UVs: 如果物体没有在3dmax里展好UV,那么这里必须勾选。
(二)Scene面板
&img data-rawheight=&528& data-rawwidth=&386& src=&/bffd674fcf1b22eb1ac93_b.jpg& class=&content_image& width=&386&&
Skybox:会直接影响你的环境光
Ambient Source:环境源,这里选的skybox
Ambient Intensity: 环境光的强度值,也就是环境光的亮度值
Reflection Source:反射源,这是Unity4.X里没有的。烘焙后会在场景文件的同名文件夹中多出一个名为 LightmapSnapshot的文件。
Realtime Resolution:实时分辨率,这个物体所产生的GI对其它物体的影响程度,值越大影响越大。例如
Realtime Resolution 参数设成比原默认的小10倍即 0.2 ,
这个值调成1后,墙上的绿玻璃颜色,能更多的影响地面了
&img data-rawheight=&393& data-rawwidth=&768& src=&/ddd503ef4eed821c9fa3bd_b.jpg& class=&origin_image zh-lightbox-thumb& width=&768& data-original=&/ddd503ef4eed821c9fa3bd_r.jpg&&
Realtime Resolution 参数改成 0.4后的效果绿色墙所产生的环境光,影响范围变小了。
&img data-rawheight=&416& data-rawwidth=&836& src=&/babb5ed6d4ad475c435e5_b.jpg& class=&origin_image zh-lightbox-thumb& width=&836& data-original=&/babb5ed6d4ad475c435e5_r.jpg&&
CPU Usage:选的默认。
Baked Resolution:烘焙分辨率,如果数值是10,那么就是每个单位里分布10个纹理元素,实际测试的效果如下
Baked Resolution的参数值调成10后,阴影的边变实了
&img data-rawheight=&310& data-rawwidth=&839& src=&/190ffea2a250ecad7ccbdb9_b.jpg& class=&origin_image zh-lightbox-thumb& width=&839& data-original=&/190ffea2a250ecad7ccbdb9_r.jpg&&
Baked Resolution的参数值调成1后,阴影的边变的很虚了
&img data-rawheight=&405& data-rawwidth=&834& src=&/6ad504f44e1c49e4eade0_b.jpg& class=&origin_image zh-lightbox-thumb& width=&834& data-original=&/6ad504f44e1c49e4eade0_r.jpg&&
Indirect Intensity:间接强度,这个和unity4.x里的参数有些像,可以简单的理解为光的反射强度。
Bounce Boost:反弹强度,同一单位面积内增大光的反射数量,相比较来说,这个值增大会直接影响渲染时间。
Default Parameters:默认参数,这里还可以自己创建自己的参数。一般情况在预烘焙时选择最低设置。
Atlas Size:烘焙图的大小,以前4.X版本只能通过脚本来调整,现在好了。
(三)灯光参数
&img data-rawheight=&506& data-rawwidth=&555& src=&/5dc1a0cc695d9e1eb73b_b.jpg& class=&origin_image zh-lightbox-thumb& width=&555& data-original=&/5dc1a0cc695d9e1eb73b_r.jpg&&
这里需要注意的是Baking 选项里要设置成Baked ,否则烘焙不起作用。
剩下的两个参数,基本和Unity4.X的参数功能相同。
最后说一下,下面这几个参数一定要注意,它们影响烘焙速度和光影图数量,当初就在这上面吃过亏,场景太大,参数没调小,烘了一晚上啥也没出来。“Scale In Lightmap
、RealtimeResolution、Baked Resolution、Atlas Size”
总体来讲要想提高烘焙速度,就从这Scale In Lightmap 、Realtime Resolution、Baked Resolution三个参数入手基本就可以了。
其实升级到Unity5 ,我们遇到了很多问题,很多以前的脚本、插件都不好用,都需要我们一步步解决。
本文已收录于以下专栏:
相关文章推荐
首先将需要的字体集导入到项目中,也可以使用unity自带字体,然后将需要做成静态字体的字导入到项目中,每个字都是一张精灵图片,且图片大小相同。然后选中所有的字体图片,将其Texture Type 更改...
所谓简易版,就是用户每次登陆软件时,发现新版本,就提示用户去下载全新软件using System.C
using UnityE
using AssemblyCShar...
为了某一个Bug,把游戏工程从Unity4.6 升级到Unity5 测试,中间出现了一些问题,小记。
(1) Plugin的使用变化
(2) 废弃了 AddComponent(string) 接口
1.创建AssetBudle 通过脚本将一个prefab创建为AssetBudle,将下面代码放入Editor文件夹下面using UnityE
using UnityE
StartCoroutine(“xiazaii”,mm[0].path);
//开始下载
public IEnumerator xiazaii(string path){
工具Unity 中的资源来源有三个途径:一个是Unity自动打包资源,一个是Resources,一个是AssetBundle。
Unity自动打包资源是指在Unity场景中直接使用到的资源会随着场景被...
互联网产品saas化有多难,为什么很难成功,最终做成了外包?
一、 先说说 Unity4.X 烘焙面板里常用的参数Quality 烘焙质量一般会选择高Bounces 反弹 这个值一般选 1,如果选 2,烘焙的时间会增长 50%左右,所以设置这个值要谨慎。Sky ...
之前自己研究了下lightmap,不过并没有关注效果和细节,只是关注了使用流程。
        今天配合美术测试了下Unity5中的lightmap,有一些经验心得。
        首先推荐一...
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)Unity5的AssetBundle与NGUI的坑 - CSDN博客
Unity5的AssetBundle与NGUI的坑
Unity5的AssetBundle机制相较于以前的改动非常大,它把以前繁杂的push pop依赖和各种自定义名称的步骤全简化了~具体新的用法在这里我就不提了,官方的Demo或是在网上都能看到新机制的用法,这里我只想说下我遇到的新AssetBundle与NGUI的坑。
这个坑很容易发现,当UIFont或是UIAtlas与使用它们的Prefab不在一个Bundle里时,加载Prefab就会出现scripit misssing的问题:
在Editor下 unity可能还会找到原代码给你Fixing了,但是在实机上是百分百会导致UI显示不出来的。虽然我可以把UIAtlas或UIFont全部扔到prefab的bundle里,但是如果有很多prefab引用同一个UIAtlas或UIFont的话,那bundle的大小就不忍直视了。所以有没有一种方法可以继续保持prefab对UIAtlas或UIFont的依赖关系且不会出错呢?
找解决方案之前,我们得先了解出错的原因,NGUI官网上有人总结得很精辟,我直接引用了:“Loading will
fail if exist game object that have component with a script property type and value is prefab's script”,需要给他补充一点就是,只有2个prefab不在同一AssetBundle时loading才会出问题。大概就是下图这样一个脚本,引用了另一个AssetBundle的Prefab(即Sphere)。
好了,了解出问题的本质之后,我们来试着找一下解决方法
1、NGUI官网上有人给出了一种方法,就是。把代码里脚本属性全换成GameObject。
如果以前是Atlas
class UISprite
[SerializeField] UIAtlas mAtlas; // It's prefab's script. Not works for AssetBundle
那么就把它替换成GameObject,然后通过GetComponent&UIAtlas&()来获得UIAtlas
class UIScript
[SerializeField] GameObject mAtlasPrefab; // for AB, use mAtlasPrefab.GetComponent&UIAtlas&()...
这个问题确实可以从本质上解决因为自定义序列化脚本带来的问题,不过改NGUI底层实在是个不小的工作量,对应类的Inspector编辑器都要修改,所以我稍微试了一下之后马上就放弃了。
2、同事告诉我一种动态赋值的方法,因为我们在做UISprite时不给UIAtlas赋值的话,unity是不会报错的,所以我们可以写一个脚本,当运行时去动态加载对应的Atlas的Bundle,然后动态给UISprite附上UIAtlas以及spriteName。
具体做法是脚本里可以设置BundleName,AtlasName,SpriteName,以及要赋值的UISprite。
然后我们通过BundleName从一个预先设定好的位置(newPathName)取出atlas的AssetBundle,然后根据AtlasName来load出我们需要的Atlas的prefab赋值给m_sprite,然后把spriteName附上,代码大致如下:
AssetBundle bundle = AssetBundle.CreateFromFile(newPathName);
m_atlas = bundle.LoadAsset&GameObject&(assetName);
m_sprite.GetComponent&UISprite&().atlas = m_atlas.GetComponent&UIAtlas&();
m_sprite.GetComponent&UISprite&().spriteName = m_spriteN
bundle.Unload(false); 把这个脚本挂在面板上,设置好各种名称,然后把对应Sprite的UIAtlas设为None(这步是这个方法的关键),打包。加载时,脚本会动态把UIAtlas赋值上去,成功运行。
不过这种方法的缺点也是很明显的,要在打AssetBundle包之前把UIAtlas设为None,且挂上脚本手动输入名称。这会很大地影响UI界面的开发效率,而且一个面板里公共的Atlas如果很多的话,那得挂多少个动态加载Atlas的脚本,我还没算公共的UIFont呢。只能说这个方法可以绕过问题,但是不适于处于开发阶段的项目。
3、最终解决方案
后来认真想了一下问题的本质,引用的prefab要在同一个bundle下,而像material、texture这类component可以分到不同bundle下。那我是不是可以把Atlas的三部分(prefab、texture、material)分开,让prefab存在于所有用到的bundle里,而把texture和material单独提出来呢?
如果是旧版的AssetBundle机制,想按这种方式打包代码里估计得写不少依赖相关的判断逻辑。恰好,新的AssetBundle机制通过命名就可以实现这种打包关系:直接把Common Atlas.mat和Common Atlas.png命名为同一个bundle,而Common Atlas.prefab不进行命名(None)即可。当然如果想用脚本自动化命名的话估计还是得写不少判断逻辑。
这样打包之后每个Panel的AssetBundle包只比不加入Common Atlas.prefab前大了几KB,即解决了新机制的打包依赖问题,又没有过大的增加包体容量,一举两得。至此问题解决,下一步就是写一个自动化命名和检测的脚本了。毕竟不能总是人工去命名,而且也要防止其他人误操作。
PS:有人按照方法试了一下没成功,这里需要注意的是,在加载UIPanel的Bundle时需要先加载其依赖包也就是CommonAtlas所在的Bundle
不得不说,新的AssetBundle还有很多不成熟的地方,比如检测是否需要重新打包的逻辑,未进行bundle命名的文件不出现在Manifest里等等,想用让人完全放心的AssetBundle的话,估计还得等上一段时间。
本文已收录于以下专栏:
相关文章推荐
接上文.http://blog.csdn.net/zxsean/article/details/
一般来说,我们使用AssetBundle是为了方便热更新.常用的fang
昨天一位朋友在我这里留言,想让我写点Unity5的AssetBundle心得。于是我就看了相关的介绍,和自己确切的做了一次。下面来谈谈所谓的心得。
如果你觉得自己对AssetBundle不熟悉,...
将NGUI图集打包成AssetBundle的实现
UGUI可以很方便的实现打包功能,但是NGUI里面的图集有三个文件,一个预设一个图片一个材质,他们之间是有依赖关系的,所以要想实现以前的NGUI...
using UnityE
using System.C
using UnityE
/// 脚本位置:Editor文件夹下
/// 脚本功能:打包...
在开发Unity游戏的时候,为了时包变得更加小,需要将资源打包成AssetBundle,把用到的图片都改为预制(这个是从雨松那看到的,原因是如果直接放在Resources文件夹下,包会成倍数增加)
转载请注明出处!  打包AssetBundle时,不注意的话,某些Shader是无法打包到AssetBundle中的。这两天一直被这个问题困扰,抽空就研究了一下。  Unity打包Assetbundl...
http://liweizhaolili./blog/static//
昨天一位朋友在我这里留言,想让我写点Unity5的Ass...
这段时间把动态加载页做的差不多了,于是想要再发一个版本出来。在编译器里面完美运行后,点击发布
注意看 选的是64位的噢。
发布出来 运行后。发现 我去 我要动态加载的图片都没有!!!这特可怎么办。
先推荐三篇不错的文章
/archives/ABTheory.html  
/archives/ABtopic...
他的最新文章
讲师:王禹华
讲师:宋宝华
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 icloud有必要使用吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信