![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity3D
文章平均质量分 71
swejackies
这个作者很懒,什么都没留下…
展开
-
Shaders for Game
这个标题看起来有点奇怪,大部分人觉得shader的主要用途就是为游戏服务,可惜这最基本的概念却最容易被忽略。如果你经常访问这个blog,就知道我已经很久没有写任何关于shader的文章了。不是我不再对shader感兴趣,就像人人都爱写GUI程序一样,shader永远是游戏编程最让人兴奋的部分-----可以马上获得代码的直观视觉反馈,让人很有成就感。不过当我经历了一个产品的开发过程,并且开始研究引擎转载 2013-03-05 12:35:17 · 565 阅读 · 0 评论 -
Optimizing Graphics Performance (iOS)
Alpha-Testing在iOS上使用alpha-testing的开销非常大,尽量将alpha-test shader替换为alpha-blend。Vertex Performance在iPhone 3GS以及新的硬件上尽量控制每帧渲染不超过4万个顶点(一万多个面)。Lighting Performance象素级动态光照计算因为要计算每个受影响的象素而增加转载 2013-10-01 16:15:36 · 922 阅读 · 0 评论 -
Unity性能优化之Draw Call
Unity(或者说基本所有图形引擎)生成一帧画面的处理过程大致可以这样简化描述:引擎首先经过简单的可见性测试,确定摄像机可以看到的物体,然后把这些物体的顶点(包括本地位置、法线、UV等),索引(顶点如何组成三角形),变换(就是物体的位置、旋转、缩放、以及摄像机位置等),相关光源,纹理,渲染方式(由材质/Shader决定)等数据准备好,然后通知图形API——或者就简单地看作是通知GPU——开始绘制,转载 2013-10-01 14:35:25 · 893 阅读 · 0 评论 -
Unity3D开发性能优化
1、顶点性能 一般来说,如果您想在iPhone 3GS或更新的设备上每帧渲染不超过40,000可见点,那么对于一些配备 MBX GPU的旧设备(比如,原始的 iPhone,如 iPhone 3g和 iPod Touch第1和第2代)来说,你应该保证每帧的渲染顶点在10000以下。2、光照性能 像素的动态光照将对每个受影响的像素增加显著的计算开销,并可能导致物体会转载 2013-10-01 14:28:59 · 853 阅读 · 0 评论 -
深入理解Unity脚本的执行顺序
Unity是不支持多线程的,也就是说我们必须要在主线程中操作它,可是Unity可以同时创建很多脚本,并且可以分别绑定在不同的游戏对象身上,他们各自都在执行自己的生命周期感觉像是多线程,并行执行脚本的,它是如何执行的呢?我们做一个小小的实验来验证它。如下图所示,在Hierarchy视图中创建三个游戏对象,在Project视图中创建三条脚本,然后按照顺序将脚本绑定在对应的游戏对象身上。三条转载 2013-09-06 01:39:30 · 985 阅读 · 0 评论 -
全面理解Unity加载和内存管理
Unity里有两种动态加载机制:一是Resources.Load,一是通过AssetBundle,其实两者本质上我理解没有什么区别。Resources.Load就是从一个缺省打进程序包里的AssetBundle里加载资源,而一般AssetBundle文件需要你自己创建,运行时动态加载,可以指定路径和来源的。 其实场景里所有静态的对象也有这么一个加载过程,只是Unity后台替你自动完成了。转载 2013-09-06 01:21:16 · 719 阅读 · 0 评论 -
Unity3D 面试
Unity应用能力认证 (Unity Certified User)测试试题适合多媒体专业,3D专业,游戏专业,美术专业的学生及Unity初学者。证明您已经拥有Unity引擎的基础知识。窗体顶端Name: Q Q: E-mail: 1. 哪种实时光源是Unity中没有的?A:点光源B:方向光C:聚光灯D:日光灯2. 如何在Unity中创建地形系统?A:T转载 2013-08-09 22:01:17 · 1946 阅读 · 0 评论 -
Unity运行时刻资源管理
----------------------------------------------------------------------------------------Asset Bundles制作:BuildPipeline.BuildAssetBundle()加载:AssetBundle.Load()卸载:AssetBundle.Unload(bool unloadAl转载 2013-08-10 01:00:51 · 840 阅读 · 0 评论 -
Unity的一些笔试题
1.请描述游戏动画有哪几种,以及其原理。 答:主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画。 关节动画把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活Quake2中使用了这种动画; 单一网络模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色转载 2013-08-09 22:31:34 · 1958 阅读 · 0 评论 -
Unity 3D自动保存项目
很多时候,在编写项目时,遇见unity 的Buge导致强制退出,这时根本来不及保存hierarchy视图中的东西,这是一件很糟糕的事情,所以在今天看资料时,有幸的看到了这篇自动保存项目场景的源码。很是不错。源码如下: 1 using UnityEngine; 2 using UnityEditor; 3 using System; 4 5 public cla转载 2013-08-10 00:32:02 · 1554 阅读 · 0 评论 -
Unity 3D 面试题
人肉敲打,内容转自 unity3d工作室1.请描述游戏动画有哪几种,以及其原理。2.alpha blend 工作原理3.写光照计算中的diffuse的计算公式4.lod是什么,优缺点是什么5.两种阴影判断的方法工作原理6.MipMap是什么?作用?7.用u3d实现2d游戏,有几种方式?8.u3d中碰撞器和触发器的区别?9.物体发生碰撞的必要条件10.Ch转载 2013-08-09 22:28:31 · 2005 阅读 · 0 评论 -
Unity3D BMFont使用图片自定义字体(无需字体文件)
网上搜BMFont做字体,很多都是从一个字体文件读取,然后选择需要的字,然后保存成图片文字,这个对于一般的文字的确很实用,因为Unity本身不支持中文,所以只好这样了。但是做过游戏的都知道,策划总是喜欢用一些乱七八糟的数字字体,而美工丢给你的也只有图片文件,像这样:于是最开始我就自己实现了一个类,来处理这种情况,不过实际上使用起来还是挺麻烦。因为字体这种东西别人都已经实现了,我这是转载 2013-05-24 00:05:07 · 7668 阅读 · 5 评论 -
Unity bundle的制作和使用
Unity有个很好的功能,大致是很多专注于PC的engine没有提供的(因为没有必要),就是能加载主包外的资源,这个主包外的资源,unity把它叫做bundle。这个功能的提供,主要是在web上或者是ios、android等设备上,主包太大的话,会遇上下载主包时间太长,体验不佳;或者是有些市场直接就限制了主包的大小。制作的bundle的方式,这里只讲bundle中连scene都带入的:转载 2013-05-22 12:26:42 · 2298 阅读 · 0 评论 -
Unity3D游戏制作-3D横版场景的角色移动控制
本系列文章由 Amazonzx 编写,欢迎转载,转载请注明出处。http://blog.csdn.net/amazonzx/article/details/7824112 开博写Unity的东西也写了好多,但大部分都是翻译,原创很少,接下来的一段日子,我会多写一些原创文章,介绍一些在项目中积累的简单实用的技术。 一、导入场景,并在场景中加入TouchPlan转载 2013-05-07 01:28:35 · 1948 阅读 · 0 评论 -
Unity3d动态数据管理(1) Export AssetBundles
我们在使用Unity3D制作大型场景的时候,往往需要加载大容量的数据文件,特别是对于三维数据而言,模型、材质、贴图、特效等资源都是组成项目不可或缺的一部分。数据体量越大,数据加载就越明显。对于良好的人机交互体验而言,让用户处于长时间的等待,是一种非常差的体验感,很多用户很可能就是因为没有耐心等待,就直接关闭你的应用,离开。 所以,做任何的项目之前,必须要先解决场景数据管理转载 2013-03-28 15:20:03 · 1076 阅读 · 0 评论 -
Unity3D游戏对象消失enabled、Destroy与active的区别
Unity3D游戏对象消失三种方法的区别: (1) gameObject.active:是否在场景中停用该物体,在你gameObject.active =false中,则你在场景中用find找不到该物体。如果该物体有子物体,你要用SetActiveRecursively(false) 来控制是否在场景中停用该物体。 (2) GameObject.Destroy():表示移除转载 2013-03-26 18:53:26 · 1349 阅读 · 0 评论 -
NGUI动态字体教程
第1步:导入NGUI第2步:导入NGUI_277c_DynamicFonts.unitypackage如果使用的是ngui2.3.1或更高的话替换UIFont.cs和UIFontInspector.cs第3步:添加ttf字体,在这里我用微软雅黑做例子经过一番艰苦的转换后导入工作就大功告成了,接下来进行我们下一步的工作第4步:下面就让我们进入真正的动态字体转载 2013-03-26 18:49:02 · 1191 阅读 · 0 评论