Unity开发相关
萌化小强
曾经迷茫的小小开发人员,现如今找到目标,准备起航。
展开
-
自定义UGUI界面抽象框架
自定义UGUI界面抽象框架 使用UGUI来制作用户界面是很方便的,但如果每个界面都用原始的方法,独立写一个脚本对每个UI组件进行控制和操作,虽然一样能工作的很好,但对于后续拓展以及调试等工作会造成不小的麻烦,想象一下臃肿复杂的Start方法和Update方法,在需要修改的时候会非常痛苦。 因此一个比较抽象的,条理清晰的框架就显得很必要了,这种框架的设计方法有很多很多种,不同的人也会原创 2018-01-15 14:57:11 · 556 阅读 · 2 评论 -
Unity Shader学习记录(三)
Unity Shader学习记录(三) 前文中编写的Shader只有个漫反射颜色设置,渲染出来的模型是单调的纯色,而且虽然有点光照效果,但是看起来暗淡无光,总之就是不好看。在实际的游戏或者场景渲染中,模型的表面是多姿多彩的,光照也是复杂多变的,因此Shader往往需要具有处理这些数据的能力。纹理贴图 纹理和贴图都是在计算机图形图像中很常见的概念,简单说来它们指的就是一张图片,在渲染时根据模型的信原创 2018-03-02 17:31:35 · 217 阅读 · 0 评论 -
Unity Shader学习记录(五)
Unity Shader学习记录(五) 在游戏中会有多种多样的渲染风格,有写实的,复古的,追求光影的,追求精细度的等等等等,但有一种渲染风格能为游戏营造一种完全不同的氛围,它不以追求真实性为目标,却反其道而行之,为玩家制造出一种容易辨识和更加夸张的感觉;这便是卡通风格渲染。 说到卡通风格渲染,有很多典型的例子,比如军团要塞2,比如无主之地系列;它们使用卡通风格渲染为玩家营造的氛围就是一种荒诞原创 2018-03-12 09:26:08 · 263 阅读 · 0 评论 -
Unity Shader学习记录(六)
Unity Shader学习记录(六) Shader的基本高光模型能给物体渲染上亮眼的反光效果,但在实际使用中这个效果却并不总是需要那么亮的,尤其是在一些粗糙表面上。当一个物体具有粗糙表面并且使用法线贴图进行渲染后,高光模型制造出来的光照效果会显得十分违和;本来粗糙表面就不应该有高光反射,但同时产生高光的光源又一定会在粗糙表面产生一片更亮的区域。 为了解决这个矛盾现象,一种可行的方案便是使用原创 2018-03-19 10:56:48 · 252 阅读 · 0 评论 -
再谈UGUI列表
再谈UGUI列表 在之前的两篇博客《UGUI的列表》和《UGUI列表进阶》中讨论了如何基于UGUI的ScollView通用可滑动组件设计一个功能相对窄化的列表组件方便使用,采用了类似Android系统中的ListView组件设计思想,抽象化的列表,剥离子项生成与列表本身,使用Adapter机制等等。 两篇博客一共讨论了两种实现方式,非重用的和重用的,两者的最大区别在于生成的子项数目不同,非重原创 2018-03-23 09:43:55 · 705 阅读 · 0 评论 -
Unity Shader学习记录(七)
Unity Shader学习记录(七) 阴影和光照总是密不可分的,就像明亮和阴暗本身就是两种亮度的对比那样。 在计算机图形渲染中,阴影的产生遵循着类似现实中的阴影现象的原理,也就是寻找光线无法照到的地方将其认定为阴影并予以渲染。但和现实中不同的是,很多时候计算机实时渲染并不会真的去寻找每条光线能照射到什么地方,或者说至少不是每次渲染都寻找;有一种常用的被称为“阴影映射(ShadowMap)”原创 2018-03-28 16:04:25 · 408 阅读 · 0 评论 -
Unity Shader学习记录(八)
Unity Shader学习记录(八) 大部分情况下,Shader的运行过程是与时间无关的静态过程,换句话说游戏进行过程中渲染的结果不会有什么变化;动态光影或许是比较典型的例外,但它们和游戏运行时间依然没有什么直接的联系,仅仅与场景的变化有关。 但有些情况下,能将Shader的渲染流程与游戏运行的时间建立联系是有益处的,比如希望渲染出随着时间变化而变化的效果,水波或者移动等。因此Unity的原创 2018-04-13 16:24:32 · 343 阅读 · 0 评论 -
Unity Shader学习记录(九)
Unity Shader学习记录(九) 屏幕特效是一种很常见的平面特效,不同于直接在三维渲染中做出的特效,屏幕特效仅针对已经渲染完成的屏幕显示,通俗点说就是一张和屏幕大小相当的图片。这种针对已经渲染完成的屏幕图片进行特效处理的行为被称作“屏幕后处理”。 实际使用场景中的屏幕后处理类型繁多,不同的效果各有各的针对,能良好地使用这种后处理能极大地增加游戏内容表现力,而随之带来的则是性能消耗的上升原创 2018-05-07 16:26:16 · 328 阅读 · 0 评论 -
Unity Shader学习记录(十)
Unity Shader学习记录(十) 前文提到的屏幕后处理特效只是一类在渲染完成后的帧画面基础上做二次处理的特效,虽然在大部分情况下它们是可用而且足够高效的,但更多的情况下我们不仅需要当前的帧画面,还需要场景的深度和法线信息。 一个典型的例子是边缘检测,前文中使用Sobel算子进行卷积运算来检测边缘其实并不精确,因为颜色的变化有时候并不说明真正的物体边缘,而且光照效果也会影响到边缘检...原创 2018-05-31 13:46:10 · 461 阅读 · 0 评论 -
Unity Shader学习记录(二)
Unity Shader学习记录(二) 在进入真正能看到效果的Shader之前,需要一点数学基础,也就是向量和矩阵方面的数学知识,关于这些知识不予赘述,有大量的书籍资料以及网络文章可以学习,在此仅列举一些必要的概念方便查阅。 Shader中涉及到的数学知识包括向量的运算矩阵的定义矩阵的运算矩阵与向量之间的关系矩阵与坐标系统之间的关系 具备一定的数学基础后,便可以正式编写能看出三原创 2018-02-28 09:19:27 · 157 阅读 · 0 评论 -
Unity Shader学习记录(四)
Unity Shader学习记录(四) 前文结尾提到的一种能在模型平面上渲染出凹凸感的技术,也就是法线贴图技术,其原理并不复杂;考虑到凹凸感本身来源于模型不同表面特性对光照的反应,而影响光照的最大因素之一当然是法线了,平面上每一点的法线都是一样的,这也就是为什么渲染到平面上的纹理看起来是平的,如果给与一个平面上不同点以不同的法线参数,那么理论上就能实现凹凸不平的效果。法线贴图 法线贴图技术是现在原创 2018-03-07 15:41:00 · 222 阅读 · 0 评论 -
自定义操作指令集
自定义操作指令集 在游戏系统中充满了各种各样的指令,玩家的操作输入,AI角色的行为输入,剧情的进展,战斗时的数据运算等等,这些看起来各自独立的部分在背后其实都被指令联系到了一起。 试想一下要是不使用指令,各种行为和运算都是硬编码写在游戏逻辑中,且不说后续拓展基本变为不可能的任务,光是编码过程中的白盒测试都难以进行,更让人无奈的是,这样的情况与编程人员的编码能力无关,仅仅是设计上的失误而已。从原创 2018-01-24 10:09:31 · 789 阅读 · 0 评论 -
自定义事件驱动系统
自定义事件驱动系统 在程序设计里有一种模型叫做“事件驱动模型”,这个模型最初是用于异步处理之间的冲突而出现的,后来被用到各种程序中,成为了一种重要的程序设计模型,广为流传。基于事件驱动的程序结构 在最早没有事件驱动的程序中,要获取到外部设备的输入,比如键盘或者传感器之类的设备输入,则必须做设备轮询,即按照一定频率轮流访问输入设备,检查是否存在有效输入,如果有则将其读出,随后向后轮询;若没有有效输原创 2018-01-08 14:10:39 · 1178 阅读 · 2 评论 -
UGUI的列表
UGUI的列表 Unity3D提供的UGUI系统非常适合于制作基本的用户图形操作界面,也就是常说的GUI。在标准的UGUI组件包里有很多常用的UI组件,只需要将它们进行组合便能制作出合乎要求又好用的图形界面。 但是UGUI并没有提供一个常用的界面组件,即列表展示组件,取而代之的是一个更加泛化的滑动组件ScrollView,这个组件的特点就是能轻松地做出水平或垂直方向有滑动能力的界面组件原创 2018-01-17 09:56:48 · 5003 阅读 · 3 评论 -
EventSystem的使用
EventSystem的使用 EventSystem在Unity中是一个看起来像是专门服务于UGUI系统的组件,每当在场景里创建UGUI对象时,Unity编辑器都会自动产生一个EventSystem对象放在场景中,与之相对应的也有一个Canvas对象,这两个对象就组成了UGUI系统的基础,所有开发人员能看到和能用到的UGUI功能都依附于这两个对象。UGUI中的EventSystem 使用UGUI原创 2018-01-26 15:50:42 · 7304 阅读 · 0 评论 -
简单的2D射击游戏实践
简单的2D射击游戏实践 Unity3D编辑器虽然从名字上看是个制作3D游戏的工具,但其实它也提供了2D游戏制作的相关资源和功能,而且使用Unity3D来制作2D游戏并不难,只要准备好相关的图片等资源文件,有一定的编程能力就可以动手了。 接下来的分享的一个小项目是作者刚刚学习Unity3D没多久的时候为了实践一些想法和巩固对Unity3D游戏结构与制作方法的印象而编写的,非常简单,也没有使用商原创 2018-01-10 16:12:18 · 2208 阅读 · 0 评论 -
UGUI列表进阶
UGUI列表进阶 在Unity中使用UGUI来设计用户界面是很方便的,但是对于列表显示这个特定的需求,UGUI没有给出一个足够具体的解决方案,而是设计了一个很宽泛的组件ScrollView,让设计者们自己想办法实现列表。 在前文中初步讨论了如何设计一个可用的列表组件,最后设计出的结果是一个基本满足要求的通用列表组件,参考了安卓的ListView和Adapter,设计成类似的数据与展示解耦的结原创 2018-01-19 11:33:25 · 595 阅读 · 2 评论 -
状态机杂谈
状态机杂谈 计算机控制系统的控制程序具有有限状态自动机(FA)的特征,可以用有限状态机理论来描述。有限自动机(Finite Automata Machine)是计算机科学的重要基石,它在软件开发领域内通常被称作有限状态机(Finite State Machine),是一种应用非常广泛的软件设计模式。 状态机这个名字听上去似乎是个很不得了的东西,然而实际上它普遍应用于计算机行业,毕竟现代编原创 2018-02-05 18:10:13 · 384 阅读 · 0 评论 -
Unity Shader学习记录(一)
Unity Shader学习记录(一) Shader,一般称为“着色器”,是在显示处理中的渲染流水线里扮演重要角色的一种程序,它的目的是为了更加详细和精确地控制显卡渲染图像的方式和方法,极大地增加了图形图像编程人员对显卡工作流程的干预能力。 现代显卡的渲染流水线一般而言分成三个阶段,应用阶段,几何阶段和光栅阶段。其中应用阶段是指在图形图像制作软件里的过程,比如使用3D模型制作工具May...原创 2018-02-26 13:41:21 · 230 阅读 · 0 评论 -
Unity Shader学习记录(十一)
Unity Shader学习记录(十一) 关于风格化渲染的东西内容非常丰富,除了以前提过的卡通风格之外,素描风格也是一种有趣的效果,它的原理是通过光照信息采样几张不同的,代表笔触的纹理贴图,并以采样结果作为效果渲染到画面上;这样一来就如同是真的实现了画笔效果那样,光照明亮的地方没什么笔画,阴影的地方笔画很密。 此外还有一类重要的效果,那就是噪声(Noise),这一类效果泛用性很强,无论...原创 2018-07-30 16:57:22 · 511 阅读 · 0 评论