unityunity 设置启动画面出现问题

Windows10安装Unity问题集锦 - 蛮牛教育 - 蛮牛教育 - 国内最大的Unity在线学习平台|Unity培训|Unity3d培训|Unity视频学习|Unity教程 Unreal 虚幻 AR VR - Powered By EduSoho
Windows10安装Unity问题集锦
unity官方社区收集了一些Windows10安装Unity可能会出现的问题,本文将列出这些问题并给出解决办法。
如果出现以下问题:
● & & Unity无法加载
● & & 打不开欢迎界面
● & & 出现&Unity Editor has stopped working&错误
● & & 无法激活许可证
请尝试以下操作:
● & & 彻底卸载并重装Unity(甚至是Windows10)
● & & 手动更新驱动,Windows10中可能会因内存泄漏导致Unity崩溃
● & & 安装32位的Unity Editor
● & & 备份隐藏目录C:\ProgramData\Unity,然后删掉整个目录或目录中的Unity_v5.x.ulf文件
● & & 查阅下面的链接了解如何配置unity5.x许可文件:http://docs.unity3d.com/Manual/UnityActivation-Overview.html
Windows7/8/10上Unity启动时崩溃
已知问题:
● & & 如果使用Unity5.1(尤其是64位),使用第三方代理上网会导致Unity在打开Project Browser(项目浏览器)时崩溃。
● & & Unity5.0使用的浏览器引擎是Gecko(基于Mozilla的Firefox), 而5.1切换为基于Chromium的libcef,可能会有些影响。
请尝试以下操作:
● & & 检查是否安装了Lavasoft Ad-Aware WebCompanion之类的软件,或OpenCandy、Qustodio、Nahimic drivers、 Astrill VPN等类似的中间件(Windows电脑会预装这些软件)
● & & 确保禁用以上软件(例如:Lavasoft,确保删除了&C:\Windows\system32\LavasoftTcpService64.dll& 文件或直接使用AdwCleaner)
● & & 下载最新版Unity(或补丁版本)
● & & 从命令行启动Unity: http://docs.unity3d.com/Manual/CommandLineArguments.html
如果以上操作未能解决问题,可以创建崩溃日志文件并向Unity提交Bug。
创建崩溃日志:
Unity崩溃时会弹出对话框显示&Unity Editor has stopped working&,这并非Unity提交Bug报告的对话框,所以不要点击&Closeprogram&,而是进行以下操作:
● & & 打开任务管理器
● & & 切到详细信息标签页
● & & 找到Unity.exe并右键单击,在弹出菜单中选择&创建崩溃日志&
日志创建时长取决于你的电脑硬件。然后将创建好的日志文件附在Bug报告对话框反馈给Unity。
许可证激活及欢迎界面的问题
在所有操作系统上启动Unity都可能会出现的关于欢迎界面问题:
● & & 未检测到许可证
● & & 一直卡在&Checking License&界面
请尝试以下操作:
检查许可证已激活的设备数量,Pro许可证最多只能激活两台设备。必要时可在编辑器解绑许可证后重新激活:https://unity3d.com/unity/activation
删掉许可证文件然后在编辑器中再次激活。
许可证目录:
OSX: /Library/Application Support/Unity/Unity_v5.x.ulf
PC: C:/ProgramData/Unity (如果文件隐藏需在文件夹选项中设为可见)
问题:欢迎界面UI显示不正常
解决方案:这是由于Windows7上的一种特殊病毒影响了.html文件。用杀毒软件扫描并清理病毒即可。
问题:出现&No Network Connection&警告或正使用代理
解决方案:
● & & Pro用户:手动激活
● & & Personal用户:点击右上角的笑脸
问题: &Servicenot available, please try again later.&
解决方案:
导致此问题的原因有很多,该问题通常会在Unity服务器出错时出现。如果出错超过半小时,就不是Unity服务器的问题。检查网络连接及DNS并确保Unity未被防火墙拦截。
如果使用代理,请手动激活许可证
以上操作均无效,依旧打不开欢迎界面,可以从命令行(PC)或终端(OS X)启Unity,创建项目等等。
跳过欢迎界面启动Unity的方法
●& &&&打开命令行
●& &&&输入命令。
64位系统:C:\ProgramFiles\Unity\Editor\Unity.exe -createProject &path name&
32位系统:C:\Program Files (x86)\Unity\Editor\Unity.exe -createProject&path name&
以上操作会打开编辑器并创建新项目,编辑器首页还是会显示欢迎界面,关闭欢迎界面后编辑器正常打开。
●& &&&打开终端
●& &&&输入命令:/Applications/Unity/Unity.app/Contents/MacOS/Unity-createProject &path name&
&path name&替换为工程目录并去掉&&
打开已有项目,将
-createProject&path name&
-projectPath&
原文链接:
原文作者:Aurore
本文由蛮牛社区小刺刺翻译发布,转载请注明出处。
关注蛮牛教育,更新中
你还没有登录,请先或!如何用Unity实现相机画面重叠,使画面有重影? - 知乎3被浏览342分享邀请回答0添加评论分享收藏感谢收起在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
标签:至少1个,最多5个
unity UI如何开启(显示)或者关闭(隐藏)Panel界面,相信大家都是知道的,但是如何做最好呢?
可能大家一般开启/关闭界面的方法就是直接SetActive吧。这样做通常是可以的,简答快速地解决需求,但是它又两个问题:第一,Disable掉的物体上面的脚本也不运行了,而很多时候我们需要那个脚本运行。这样就不能用挂在自己身上脚本把自己SetActive(true)或者SetActive(false)。如果把自己的引用给另外一个脚本来对自己SetActive(true)或者SetActive(false),又会造成多余的耦合,并不符合OOP设计理念。第二,Disable掉的物体,重新SetActive(true),会造成较大的性能消耗,如果此界面draw call较多,会有明显的延迟。
不用SetActive(true)/(false)之后,我们还有什么其他方法解决问题吗?
以下是大家可能想到的其他方法,它们也各有各的问题:
方法:Scale改为0,0,0,再改为1,1,1;问题:改回后draw call加倍;大量垃圾回收;
方法:将界面移除Canvas这个父物体;问题:改回后draw call加倍;大量垃圾回收;而且新增父物体增加额外引用耦合;
方法:放在Camera的某个culling层上;问题:改回后draw call加倍;大量垃圾回收;只对screen space-camera有效;
方法:Canvas.enable = false;问题:改回后延迟严重;而且不方便使用;
这些都不好,那你说,什么方法可行呢?
这个解决方法就是给Panel加一个CanvasGroup,上面提到的问题,在它身上都不会发生;
若要显示:
GetComponent&CanvasGroup&().alpha = 1;GetComponent&CanvasGroup&().interactable =GetComponent&CanvasGroup&().blocksRaycasts =
若要隐藏:
GetComponent&CanvasGroup&().alpha = 0;GetComponent&CanvasGroup&().interactable =GetComponent&CanvasGroup&().blocksRaycasts =
以上就是各种方法的对比。We got a winner!
0 收藏&&|&&0
你可能感兴趣的文章
2 收藏,11.7k
6 收藏,722
1 收藏,1.9k
分享到微博?
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。出现的问题
Unity3D中长度单位是米
使用获取的屏幕信息单位是像素
也就是说,即使获取了屏幕相关信息及参数,也无法把信息转换成可在editor中使用的信息。当时想在做
于是,就开始了自己的谷歌之旅。
在StackExchange和Unity Answers上翻了翻,最终搞懂了,大致思路是这样的。
&获取Viewport里的右上角(z=Mathf.Abs(Camera.main.transform.position.z))
&使用ViewportToWorldPoint 将Vieport坐标转化为WordlPoint,游戏世界里的位置
[HideInInspector]public float leftB
[HideInInspector]public float rightB
[HideInInspector]public float topB
[HideInInspector]public float downB&&&&& &&&& void SetBasicValues(){&& &&& && &&& &//the up right corner&& &&& &Vector3 cornerPos=Camera.main.ViewportToWorldPoint(new Vector3(1f,1f,&& &&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Mathf.Abs(-Camera.main.transform.position.z)));&& &&& &&& &&& &leftBorder=Camera.main.transform.position.x-(cornerPos.x-Camera.main.transform.position.x);&& &&& &rightBorder=cornerPos.x;&& &&& &topBorder=cornerPos.y;&& &&& &downBorder=Camera.main.transform.position.y-(cornerPos.y-Camera.main.transform.position.y);&& &&& &width=rightBorder-leftB&& &&& &height=topBorder-downB&& &}
成果--守住红色
最终的结果是这样的,墙壁游戏运行后一直处在屏幕的四边。将小球控制在屏幕内。
阅读(...) 评论()程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
NGUI研究院之为什么打开界面太慢(十三)
NGUI研究院之为什么打开界面太慢(十三)
围观45320次
编辑日期: 字体:
NGUI打开界面太慢了,起初一直以为是unity的问题,最近经过我的全面测试我发现这和unity没有关系。一般一个比较复杂的界面大概需要150个GameObject
或者 UISprite 。我用NGUI直接载入发现竟然需要250多毫秒,仅仅只是两张小图。同样的GameObject 我用unity2d的Sprite载入只需要70多毫米,可见Unity2d的效率要比NGUI高多少。。我可能说的不完全对,因为U3D是闭源的,我只能猜测。
在普及一下基础知识。
GameObject go = GameObject.Instantiate(Resources.Load(“prefabName”)) as GameObject;go.AddComponent&Test&();
我想上面这一行代码,大家应该再也熟悉不过了。实例化一个Prefab,然后给它身上帮一条脚本。如下图所示,我用的是 红米作为测试机器。实例化对象我们可以拆成4部分。我用NGUI加载了150个UISpirte = 41 + 4 + 30 + 194 = 269毫秒,一般打开界面超过500毫秒的话用户就会明显感觉卡顿了。而我这个仅仅是一张图而已,事实证明NGUI加载太慢了,到底为什么这么慢?
1.Resources.Load
Resources.Load是一个”同步”耗时操作,Unity内部维护了资源的内存池,但是调用Load的时候Unity会自动的把Prefab上所引用的资源在加入内存池,它不会重复加载资源。也就是说当你加载相同的UIAtlas的时候,只会第一次比较卡。你可以试试一些线上的unity游戏,一般第一次打开某界面的时候要比以后打开此界面时间长一些。
2.GameObject.Instantiate
很多人认为加载慢的原因罪魁祸首是Instantiate()。其实我告诉你它的时间反而是最快的,上面的截图我相信就是最好的证明。第一次Instantiate要比以后执行Instantiate要慢一些,可能Unity在做一些特殊处理吧。
3.第一次添加脚本。
添加脚本一般会有两种形式,第一种是通过AddComponent&Script&的形式把脚本添加给游戏对象,还有一种是你的Prefab天生就带着这个脚本。无论哪种加载时间都是一样的。第一次加载脚本要比以后加载慢,我觉得应该是和Resources缓存池的原理一样吧。
4.第二次以后的GameObject.Instantiate 和 AddComponent&Script&
GameObject.Instantiate 就不用说了,它载入很快,这里要详细的说说Script。
对!导致于你界面打开慢的原因就是prefab上绑的脚本,罪魁祸首就是脚本。
AddComponent&Script& 以后 或者
Prefab上预先绑定的脚本。当你GameObject.Instantiate()同步方法执行的时候,并不是把脚本挂上去就完了,而它要等脚本里面的一些方法执行完毕才算结束。
脚本中有两个很典型的方法 Awake 和 OnEnable。当Prefab 用Instantiate()方法载入的时候,它的脚本必须执行完Awake和OnEnable两个方法以后才算完整载入。那么如果你的脚本这里面有一些耗时操作,那么必然载入会慢了。。
1234567891011121314
void Awake()
for(int i =0 ;i &1000; i++)
} } void OnEnable()
for(int i =0 ;i &1000; i++)
如果你在Awake() 或者 OnEnable()方法里面继续去实例化对象,继续绑定脚本,那么依然还需要把新实例化对象的 Awake()和 OnEnable()方法执行完毕才会结束。。。
这里并没有完,还有一个地方也会引起打开界面慢。代码中用Pubilc 声明的对象,然后是在编辑器拖拽赋值。
public GameObject go;
拖拽赋值,如果是资源很大的话unity需要load ,然而load就是一个同步耗时操作,那么它也会影响打开界面的时间。
如下图所示,NGUI里面 UISprite UITexture UILabe 这三个脚本上面都有 public 绑定的对象。 NGUI打开界面慢的罪魁祸首就在这里,我尝试把public 绑定的代码全部取消, 发现 20几毫秒 就载入完成了。。。 知道原因了,但是我们也没办法,因为不能随便乱改它的代码。。
一定要把一个界面的所有GameObject做成一个Prefab,有些人不想用unity的Prefab,想通过一种规则程序运行时利用GameObject.Instantiate()
和 AddComponent&Script&
来生成界面的树状结构。我做过测试如果单纯加载一个Prefab和 代码动态生成对应树状结构 前者要比后者快30%左右。所以如果做UI编辑器的话,一定要先把Prefab生成出来,一定要只加载一个Prefab。
至于Unity 的Sprite载入 为什么要比NGUI的Sprite载入快,那么唯一可以解释的就是Unity可能后台用的是C语言,而NGUI用的是纯C#,从执行效率上C会快很多,所以我们还是早日期待Unity可以自身完美的解决做界面的问题。unity4.6预览版看起来很赞,不过我更期待unity5的到来。
最后我们在说说怎么让NGUI打开界面的速度能快一些。
1.修改界面结构,尽可能让界面上绑定UISprite UITexture UILabe这样的游戏对象少一些。
2.如果界面没法拆开,那么就把界面的prefab拆成多个,比如底框是一个Prefab , 内容是一个Prefab ,列表是一个Prefab ,这样打开界面的时候用协同任务 一个一个打开,这样用户就不会感觉到界面卡顿了。。
3.期待您的补充。。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!

我要回帖

更多关于 unity自定义启动画面 的文章

 

随机推荐