unity3d引擎架构设计游戏标题界面显示异常

最新文章教程
Unity引擎控制台错误信息解释说明
在学习Unity引擎使用的时候,经常会遇到一些代码方面的错误,这些错误信息往往会在控制台面板输出,很多新人看到这些信息就容易害怕,这里对控制台中的信息,简单的进行下介绍。
第一种,普通信息:
多数情况下是我们在开发过程中使用Debug.Log()语句输出的,辅助我们进行代码测试使用的。
第二种,警告信息:
这种也不算是真正的错误,先直接&Clear&清除即可,不影响程序的正常运行,新人可以不用顾虑这些错误信息。
第三种,错误信息:
这种才是正儿八经的错误,红色图标,这类的错误必须解决,否则这个项目就会出现运行错误。
比如这个最最最常见的&NullReferenceException(空引用异常)&,出现了异常,会有相应的错误信息提示,
其实这个错误提示很完善的,整体上告诉了我们四个信息:
这4个信息都很重要,可以辅助我们解决错误。
我们可以用鼠标点击这条错误,然后在下面的框中,将&错误的描述信息&复制出来,进行翻译,查下它到底是什么错误。
很多新人好像大脑里面有对英语自动屏蔽的功能,看到了这些英语提示,直接就屏蔽,不再进行思考。然后直接截图,在群里发问。其实这点很不好,菜鸟和高手的区别之一就是能不能独立解决自己遇到的问题。这句话翻译一下,其实很简单:
这个错误是最常见的,那么这个&空引用异常&是如何出现的那??
我们先来看下代码文件:
其实代码一看,错误就很容易发现了,第9行代码,我们使用Debug命令想输出这个m_Transform的position信息,但是往上看,我们直接使用了这个m_Transform变量,但是并没有给变量进行初始化赋值,就直接用了,这个时候就出现了&空引用异常&。
接下来我们处理一下:
然后再来运行测试,现在就可以输出Position信息了:
其实&空引用异常&出现的原理很简单,就是变量声明了,但是没有赋值,就直接使用,就会出现这个错误。
其实各位只需要记住变量的使用步骤,这个错误就很容易调试解决了:
第一步:声明变量;
第二步:给变量赋值;
第三步:使用变量。
这三步,不能乱,且不能少任何一步。本文所属图书&>&
本书以实例教学为主线,循序渐进地介绍了Unity在游戏开发方面的不同功能。第1章,由零开始,引导读者熟悉Unity编辑器的各个功能模块,这部分内容对Unity程序员、美工和策划都有帮助。第2~4章是3个不同特色的3D游&&
游戏中是不是还缺少一个标题画面?现在的游戏中只有一个关卡,我们将为它添加另一个关卡,显示一个简单的标题画面。
在菜单栏选择【File】&【New Scene】创建一个新关卡,命名为start并保存。
创建TitleSceen.cs脚本,代码如下:
using UnityE
using System.C
[AddComponentMenu(&MyGame/TitleScreen&)]
public class TitleScreen : MonoBehaviour
& & void OnGUI()
& & & & // 文字大小
& & & & GUI.skin.label.fontSize = 48;
& & & & // UI中心对齐
& & & & GUI.skin.label.alignment = TextAnchor.LowerC
& & & & // 显示标题
& & & & GUI.Label(new Rect(0, 30, Screen.width, 100), &太空大战&);
& & & & // 开始游戏按钮
& & & & if (GUI.Button(new Rect(Screen.width * 0.5f - 100, Screen.height * 0.7f, 200, 30), &开始游戏&))
& & & & & & // 开始读取下一关
& & & & & & Application.LoadLevel(&level1&);
这里的代码很普通,只是显示一个标题和一个按钮,使用Application.LoadLevel读取关卡的名字。
将TitleSceen.cs脚本指定给场景中的摄像机作为。
在Project窗口选择图片mars.png,然后在菜单栏选择【GameObject】&【Create Other】&【GUI Texture】将这张图作为标题画面的2D背景,如图2-39所示。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
文章下载读书他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)[Unity3D]引擎崩溃、异常、警告、BUG与提示总结及解决方法
此贴会持续更新,都是项目中常会遇到的问题,总结成贴,提醒自己和方便日后检查,也能帮到有需要的同学。
若各位有啥好BUG好异常好警告好崩溃可以分享的话,请多多指教。xuzhiping7#qq.com。
1.U3D经常莫名奇妙崩溃。
一般是由于空异常造成的,多多检查自己的引用是否空指针。
2.编码切换警告提示。
警告提示:Some are Mac OS X (UNIX) and some are Windows.
This might lead to incorrect line numbers in stacktraces and
compiler errors. Many text editors can fix this using Convert Line
Endings menu commands.
编码格式问题,VS的话直接高级保存方案里面修改,一般我选的是UNICODE(UTF8代签名)MACINTOSH(CR),WINDOW下的可以选WINDOWS的格式,两边都要用的话,推荐选CR。
BUG:IOS下,游戏中的中文显示乱码。
解决方式:同上,修改改代码页的编码。UNICODE(UTF8代签名)MACINTOSH(CR)
3.中文界面解决问题。
monodevelop中文显示解决方法:
http://www.cocoachina.com/bbs/read.php?tid-78563.html
中文Mac系统下MonoDevelop乱码解决:
http://blog.csdn.net/ssihc0/article/details/6796118
4.安装空项目报错
不知道怎么地,在IOS试过一次空项目也在错误提示。大概是说什么“找不到需要的方法”。
重装一下就好了,估计是UNITY文件损坏或者安装不完全出错了。重装吧。
错误提示:MissingMethodException: Cannot find the requested
估计是破解U3D造成的,该破解文件可能是不支持WIN7下的……
解决方法:
1、换正版。
2、换个破解文件。
5.平台编译错误或库引用缺失
错误提示:error CS1061: Type `System.IO.FileInfo' does not contain
a definition for `Delete' and no extension method `Delete' of type
`System.IO.FileInfo' could be found (are you missing a using
directive or an assembly reference?)
出了这个错误一般有两个原因了。
1.没有引用相关的库。
2.选错编译平台。(BuildSetting里面的Platform)
错误提示:Could not start
compilationWin32Exception:ApplicationName="XXXX\mono.exe",……
解决方式:重装UNITY3D。
6.内存资源加载错误问题
错误提示:Trying to reload asset from disk that is not stored on
个人是在加载多个ASSETBUNDLE时,用了释放镜像之后,发生了下面的BUG。
这个警告它并没有对游戏流程有任何影响,不过一直跳出来很烦人。我们项目中是因为用Dictionary删除的时候没有删除完整导致的。
解决方案参考:http://blog.sina.com.cn/s/blog_5b6cbipi.html
个人认为比较大可能是下面的原因:
还没释放完镜像再次加载就出BUG了。将所有ASSETBUNDLE加载完后再同一释放,这样就没问题了。
Unity will only allow you to have a single instance of a
particular AssetBundle loaded at one time in your application. What
this means is that you can't retrieve an AssetBundle from a WWW
object if the same one has been loaded previously and has not been
unloaded. In practical terms it means that when you try to access a
previously loaded AssetBundle like this:
:http://docs.unity3d.com/Documentation/Manual/keepingtrackofloadedassetbundles.html)
查阅了一下,貌似还有别的问题能导致这提示。下面是相关可以继续深入的资料,可以帮助大家理解U3D的加载和内存管理:
百度搜一下下面两篇文章,应该是出自圣典论坛:
1.【全面理解Unity加载和内存管理】
2.【全面理解Unity加载和内存管理机制之二:进一步深入和细节】
国外论坛的讨论:
http://forum.unity3d.com/threads/49298-Trying-to-reload-asset-from-disk-that-is-not-stored-on-disk
貌似老外也没完全确切搞定这个。
错误提示:Deleting
persistent object without writing it first
不论如何你都不应该直接修改一个从assetbundle加载进来的最初数据,一般都要先实例化出来再对其修改。但是引用的东西(例如mesh),这些也不能修改它。若要修改的话,则先复制一份出来。
//复制一份模型出来重新复制,以免直接修改被引用的镜像模型。如下:
Mesh temp = Mesh.Instantiate(smr.sharedMesh) as M
myMesh.sharedMesh =
7.时间错误、NaN错误
错误提示:transform.position assign attempt for 'XXX' is not
valid。Input rotation is {NaN, NaN, NaN, NaN}.
一般是由于游戏暂停将timescale设为0引起的,需要寻找相应用了Time.deltTime等参数的函数修改。否则会导致计算出错报空异常。
详细解决看另一篇文章:
关于NaN(Not a Number)的问题&
8.动画错误
这个错误是4.0新引进动画系统才出现的。
错误提示:Mecanim: BindSkeleton: Cannot find
transform"objectname"
解决方式:
1.找到该对应transform"objectname"的模型,直接在检索面板搜索所有相应名字,能容易找到。
2.将模型的面板的Rig部分的动画AnimationType改为none
9.坐标系向量计算的错误提示
错误提示:Look rotation viewing vector is zero
解决方式:一般是由于摄像机的旋转角度造成的。也可能是向量的计算多余而系统提示。我们项目中是强制摄像机90度的时候出现,改成89.9度就没问题了。
具体还有的参考U3D官方论坛:
若没找到解决方法再搜索下。
10.关于AssetServer
错误:明明上传了所有修改,但是别人的机子却没有下载带最新代码。
原因:Merge完代码之后,操作了ignore server
change,UNITY默认是以你本机子的为准,若此代码没有再次修改,则AssetServer不认为这个东西被修改过,没有上传那代码。
解决方式:打个空格重新保存一下该代码。
11.关于数据格式的错误
错误提示:Illegal
JSON sequence
解决方式:
12.导出WINDOS平台下的项目运行不成功
错误提示:没有找到相应assetbundle的路径
解决方式:因为用了assetbundle加载,而游戏在有中文路径下,assetbundle的路径不能有中文。换个无中文的目录即可。从根源上能解决的方案现在暂时没有。
13.导入资源出错
错误提示:Error while importing package :Couldn't decompress
解决方式:导入资源出错,大部分都是中文路径惹的祸。将资源换到无中文路径试试。如C/D盘根目录。
14.效率调优报错
错误提示:Non
matching Profiler.EndSample (BeginSample and EndSample count must
解决方式:
15.IOS下JIT错误问题、编译错误、调试错误
IOS下JIT错误是比较常见的,因为IOS不支持JIT动态编译,所以需要改为合适的AOT静态编译。
错误提示:Attempting
to JIT compile method
'System.Linq.OrderedEnumerable`1&:GetEnumerator ()' while
running with --aot-only.
解决方式:
关于使用了LINQ字典排序的错误解决方法
错误提示:Installation of apps is
prohibited by a policy on the device
解决方式:打开一个开关,允许在安装APP,在“设置-》通用-》访问限制-》安装应用程序”
16.U3D寻路信息错误
错误提示:"XXXX" can only be called
on an active agent that has been placed on a NavMesh.
解决方式:角色或怪物生成时要直接给模型赋值到相应的地形位置上。因为开始寻路组建没有获取到正确配置而一直报错。
17.Assetbundle资源版本不对
团队协作有时候可能会有人用的U3D版本与其他人不一样,这个是要求先协定好的。大家要用同样的版本作为开发基础。
解决方式:关于assetbundle的问题,4.1版本打出来的包,在4.2读取是不适应的。得注意打包的环境。
转载自:http://blog.sina.com.cn/s/blog_5b6cbh.html
阅读(...) 评论()

我要回帖

更多关于 unity5 引擎 源代码 的文章

 

随机推荐