
游戏编程
文章平均质量分 67
StormLikeMe
this is
展开
-
Unity官方文档笔记(四)导入
一、导入模型使用 Scale Factor 和 Convert Units 属性可调整 Unity 对单位的解释。例如,3ds Max 使用 1 个单位表示 10 厘米,而 Unity 使用 1 个单位表示 1 米。使用 Mesh Compression、Read/Write Enabled、Optimize Mesh、Keep Quads、Index Format 或 Weld Vertices 属性可减少资源并节省内存。更多1.1 导入人形动画人形 (Humanoid) 模型是一种非常特别的结原创 2021-07-31 15:08:43 · 2496 阅读 · 0 评论 -
Unity官方文档笔记(三)Unity性能分析器
一、Profiler窗口入门默认情况下,性能分析器记录并保留游戏的最后 300 帧,并显示有关每一帧的详细信息。可以在 Preferences 窗口(菜单:File > Preferences)中增加其记录的帧数(至多 2,000 帧)。1.1 性能分析器控件Deep Profile启用此设置可对所有 C# 方法进行性能分析。启用此设置后,Unity 会将检测功能添加到所有 Mono 调用,然后便可以对脚本进行更详细的调查。请参阅深度性能分析。Call Stacks要记录用于脚本内存分配的原创 2021-07-29 19:33:43 · 2285 阅读 · 0 评论 -
Unity官方文档笔记(二)编辑器功能
一、Preference1.1 General属性功能Auto Refresh启用此设置可在资源更改时自动更新资源。Load Previous Project on Startup启用此设置可在启动时始终加载上一个项目。Compress Assets on Import启用此设置可在导入期间自动压缩资源。Verify Saving Assets如果要在退出 Unity 时单独验证要保存的资源,请启用此设置。Script Changes While Pl原创 2021-07-29 09:50:09 · 1092 阅读 · 0 评论 -
Unity官方文档笔记(一)在Unity中操作
前言:本系列文档基于Unity 2019.4版本进行整理一 系统要求1.1 Unity EditorWindows需要Win7(SP1+)及以上系统,仅限64位版本;CPU要求X64架构;GPU要求DX10以上Mac需要Sierra 10.12.6以上系统;仅限X64架构;GPU要求Metal兼容型 Intel 和 AMD1.2 Unity PlayerAndroid4.4(API 19)以上系统;CPU为ARMv7或ARM64;GPU要求OpenGL ES 2.0以上或Vulkan。B原创 2021-07-22 17:15:19 · 1099 阅读 · 2 评论 -
Unity渲染基础-Untiy渲染路径
1、基础说明Unity内置管线的渲染路径主要包含了延迟渲染管线和前向渲染管线。(不讨论旧版延迟渲染和旧版顶点光照)Unity内置管线的切换可以在Graphics Setting中更改也可以在摄像机的设置上更改参考Unity官方渲染路径说明...原创 2020-11-23 20:00:49 · 422 阅读 · 0 评论 -
Mecanim 动画系统(三)动画片段设置
最上面显示的是该动画片段的名称,上图中该动画片段名称为dodge。Start和End表示的是该动画片段的起始帧和结束帧。一般在动画分帧时处理好。LoopTime 勾选上表示该动画片段重复播放。勾选上LoopTime可以开启Loop Pose的勾选。启用Loop Pose可使运动无缝循环。Cycle Offset 表示周期偏移,可以设置相对于循环动画周期的偏移。 Root...原创 2018-02-06 17:47:40 · 611 阅读 · 0 评论 -
Mecanim 动画系统(二)模型导入设置
Model:Scale Factor : 缩放因子,由于不同建模软件生成的模型文件单位尺度不统一,为了在Unity中统一,就需要进行缩放。Mesh Compression(Off/Low/Medium/High):网格压缩(关闭/低/中/高)。只要不过分影响模型原有形状,在移动平台应该尽量选高压缩。Read/Write Enabled:开启读写,Unity默认打开,但是若无修改模型...原创 2018-02-05 20:02:54 · 724 阅读 · 0 评论 -
Mecanim 动画系统(一)模型规范
模型方面:1、面数控制,以三角面计算。在移动平台上,普通角色控制在1k~2k之间。尽量在优化的同时不减少画面效果,或者略微减少画面效果。2、所有角色模型位置最好站立在原点。一般以物体对象中心作为轴心。2、尽量不要有超过4边的面3、光滑组,法线4、单位M,单位比例5、中心点6、3Ds Max:RestXfromMaya:freeze transformations...原创 2018-02-05 15:37:31 · 489 阅读 · 0 评论 -
Mecanim 动画系统(十)反向动力学(Inverse Kinematics)
角色动画中的骨骼运动遵循动力学原理,定位和动画骨骼包括两种类型的动力学:正向动力学(FK)和反向动力学(IK) 在一套FK系统中,一般的规则是:层级里的一个父节点驱动任意子节点的运动。例如,如果你移动前臂(父),手腕(子)就会随之运动。但是,如果你移动腕节点,前臂还将停留在原处。这是制作动画物体(例如一个行走的角色)的手臂的一种简单、直观的方法,因为动画制作者只需要考虑手臂相对应...原创 2018-02-08 19:56:01 · 2605 阅读 · 0 评论 -
Unity手游性能优化——从魂斗罗谈起 笔记
源自 http://gad.qq.com/lundao/detail/10000136内存优化方面1、资源优化贴图:贴图压缩成ETC/PVRTC格式;带alpha通道的贴图进行alpha拆分,之后分别压缩模型:网格精度压缩、临近的顶点进行删减动画:临近的一些关键帧进行去除;删除一些冗余的关键帧;声音:压缩成OGG格式粒子:少用粒子,每一个粒子大约占用10k的内存;S转载 2018-02-03 10:57:05 · 842 阅读 · 0 评论 -
Pass的通用指令开关
转载自https://www.cnblogs.com/sifenkesi/p/4723813.htmlLOD:设置:单个设置Shader.maximumLOD、全局设置Shader.globalMaximumLOD、QualitySettings里面的Maximum LODLevel原理:小于指定值的shader和subshader才能被使用。应用:有时候一些显卡虽然支持很转载 2017-12-23 15:37:28 · 1054 阅读 · 0 评论 -
Mecanim 动画系统(四)Avatar系统
我们在设置Animation Type 为Humanoid 模式后,Mecanim会尝试将现有骨骼结构匹配到Avatar骨骼结构。如果匹配成功,可以在Configure 按钮判断一个打勾的标记(如上图),否则会看到叉号标记。我们点击Configure按钮,便可进入到Avatar配置界面。Avatar配置界面有两个选项卡,分别是Mapping(骨骼映射)和Muscles(肌肉)。骨骼映射...原创 2018-02-07 14:52:48 · 1595 阅读 · 0 评论 -
Mecanim 动画系统(五)动画器组件Animator
Animator动画控制器组件是Avatar与行为之间的链接。Controller:附加到此角色的动画控制器,后续说明。Avatar:此角色的Avatar。Apply Root Motion:勾选表示应用根运动,即动画本身会产生根运动。否则需程序控制运动。 Update Mode:Normal 表示按Update更新方式;Animate Physics 表示物理方式动画处理;U...原创 2018-02-07 15:53:07 · 561 阅读 · 0 评论 -
Mecanim 动画系统(六)动画控制器 Animator Controller 界面介绍
在动画器组件Animator的第一个需要的配置的就是动画控制器。我们可以通过右键->Create->Animator Controller来创建一个动画控制器。可生成如下图文件。在上图点击open可以打开动画控制器界面,如下图。左上角显示的是动画层,默认有一个Base Layer。左下角显示的是动画参数,暂时为空。中间有一个Any State的状态,...原创 2018-02-07 16:26:51 · 754 阅读 · 0 评论 -
Mecanim 动画系统(七)动画状态机
1、状态机基本思想是角色在任何给定时间忙于一些特殊的动作。可用的动作取决于游戏类型,但典型动作包括空闲、走路、跑步、跳跃等。这些动作称为状态,在场景中,角色处于走路、空闲等“状态”。通常,角色要进入另一种状况会受到限制,而不是可以直接从任何状态转换成任何其他状态。例如,跑跳仅在角色已经在跑步时而非停滞不前时实现,所以永远无法直接从空闲状态转换成跑跳状态。角色可从当前状态进入下一个状态的选型称为...原创 2018-02-07 19:23:36 · 1825 阅读 · 0 评论 -
Mecanim 动画系统(八)混合树(Blend Tree)
1、混合树在游戏中,游戏角色有时候并不精确地处在某一个状态中,如站立与行走之间的过渡。状态转换是从一个状态平滑转换为另一个状态的一个过程。而混合,则可以看作有多个动画同时进行。要使用混合,参与混合的动作必须有相似性质和时间。混合,可以看做一种特殊的状态。我们可以在动画控制器窗口界面右键->Create State->From New Blend Tree。来创建一个新的混合...原创 2018-02-08 15:42:10 · 6390 阅读 · 0 评论 -
Mecanim 动画系统(九)动画层与Mask
在Unity中,动作层的主要作用是管理不同身体部位不同行为的复杂状态。如,某个角色下半身可能是stand(站立)、walk(走路)、run(跑步)。上半身可能在shot(射击)、run(摆手)、cast(投掷)等。如果为每一种情况增加一种动画片段,需要比较大的资源,管理也不方便,动画层可以解决这个弊端。建立Animator Controller 动画控制器 后,可以在对应界面的左上角管理动...原创 2018-02-08 17:30:31 · 552 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第4章 学习 Shader 所需的数学基础
摘录自 冯乐乐的《Unity Shader入门精要》笛卡尔坐标系1)二维笛卡尔坐标系在游戏制作中,我们使用的数学绝大部分都是计算位置、距离、角度等变量。而这些计算大部分都是在笛卡尔坐标系下进行的。一个二维的笛卡尔坐标系包含了两个部分的信息:一个特殊的位置,即原点,它是整个坐标系的中心。两条过原点的互相垂直的矢量,即X轴和Y轴。这些坐标轴也被称为是该坐标的矢量。OpenG...转载 2017-05-02 16:21:25 · 4458 阅读 · 1 评论 -
几个C#测试说明的问题
1、长引用与短引用var time1 = System.DateTime.Now;int loopCount = 1000 * 1000 * 100;var test1 = test.wrr.test;for (int i = 0; i < loopCount; i++){ if (test1.haha){ }}Debug.Log("[Use Time]_sho...原创 2018-12-31 22:18:04 · 192 阅读 · 0 评论 -
《计算机图形学》学习笔记(三)画线算法
画线算法:已知点A(x1,y1)和点B(x2,y2),画出点A和点B之间的所有的点。1、DDA(数值微分)算法已知直线方程可以表示为 y = kx + b以下公式仅考虑 |k|&amp;lt;=1(这种情况下,直线在y轴方向增长的速度小等于在x轴方向的速度)已知:y1 = kx1 + by2 = kx2 + b因为x2 = x1 + 1所以y2 = k(x1 + 1) + by2 -...原创 2019-01-15 16:41:27 · 1198 阅读 · 0 评论 -
游戏中一个死亡复活的bug
玩家反馈死亡复活后,其他玩家有时候看不到该玩家复活。出现原因:玩家死亡后,立即点击复活。其他玩家收到服务端消息后,死亡消息进入到消息队列中,放在Update中处理。复活消息直接处理。导致消息处理的时间顺序不对,其他玩家可能先处理复活消息,再处理死亡消息。处理方法:要么去掉消息队列直接处理,要么全部进消息队列。规避方法:代码要统一规范处理,不能一部分用这个,一部分用那原创 2017-10-16 16:13:05 · 619 阅读 · 0 评论 -
Unity中键盘按下鼠标异常
今天在写Unity功能进行测试的时候,发现按住键盘后,鼠标位置会隐藏,移动鼠标会闪烁,松开键盘后鼠标位置会在屏幕中间显示。结果是UICamera 下 useController 勾选上就会有这样的问题。对应Editor面板中属性如下图原创 2017-10-17 17:15:29 · 1014 阅读 · 0 评论 -
20170810 Unity项目笔记
今天有个需求。里面涉及到NGUI下的坐标转换。这本来是很简单的事情。获取NGUI下某个控件的屏幕坐标代码如下:UICamera.currentCamera.WorldToScreenPoint(obj.transform.position);然后我也就信心满满地等待结果。结果发现不对劲。我们知道,Camera.WorldToScreenPoint 得到的坐标是以屏幕左下为0,0,右原创 2017-08-10 18:01:26 · 338 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第9章 更复杂的光照
转载自 冯乐乐的《Unity Shader入门精要》Unity 的渲染路径在Unity里,渲染路径决定了光照是如何应该到Unity Shader 中的。因此,如果要和光源打交道,我们需要为每个Pass指定它使用的渲染路径,只有这样才能让Unity知道,“哦,原来这个程序想要这种渲染路径,那么好的,我把光源和处理后的光照信息都放在这些数据里,你可以访问啦!”也就是说,我们只有为Shader ...转载 2017-06-16 10:36:32 · 4226 阅读 · 2 评论 -
Unity 常用旋转API
Unity中的旋转通常可以用Transform 直接控制 和 rotation 控制两种方式。一、Transform控制(工程中的scene1)1.1 Transform.Rotate旋转某个角度函数定义public void Rotate(Vector3 eulerAngles);public void Rotate(Vector3 axis, float angle);原创 2017-04-27 21:50:13 · 8669 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第5章 开始 Unity Shader 学习之旅
转载自 冯乐乐 《Unity Shader 入门精要》一个顶点/片元 着色器的结构大概如下: Shader "MyShaderName"{ Properties { //属性 } SubShader { //针对显卡A的SubShader Pass { //设置渲染状态和标签 //开始CG代码片段 CGPROGRAM //该代码的预...转载 2017-05-09 13:39:12 · 2876 阅读 · 1 评论 -
Unity脚本执行顺序
在Unity中,继承于MonoBehaviour 的类,有几个Unity3D自带的事件函数按照预定的顺序执行作为脚本执行。我们可以做一些测试来验证以及学习他们的执行顺序。测试1:创建一个空物体A,添加脚本ScriptA,代码如下:public class ScriptA : MonoBehaviour { void Awake() { Debug.原创 2017-04-22 23:18:11 · 785 阅读 · 0 评论 -
Unity 简单的特效管理
在战斗场景中,角色的战斗通常需要加载许多特效,重复加载特效会影响运行效率,可以写一些简单的代码来管理。using UnityEngine;using System.Collections;using System.Collections.Generic;public static class EffectManager{ public static Dictionary eff原创 2017-04-22 16:27:19 · 4665 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第2章 渲染流水线
来源作者:candycat http://blog.youkuaiyun.com/candycat1992/article/ 2.1 综述渲染流水线的最终目的在于生成或者说是渲染一张二维纹理,即我们在电脑屏幕上看到的所有效果。它的输入是一个虚拟摄像机、一些光源、一些Shader以及纹理等。 渲染流程分成3个阶段:应用阶段、几何阶段、光栅化阶段。 应用阶段:这个阶段由我们...转载 2017-04-17 14:45:03 · 2183 阅读 · 4 评论 -
Unity Shader入门精要学习笔记 - 第3章 Unity Shader 基础
概述总体来说,在Unity中我们需要配合使用材质和Unity Shader才能达到需要的效果。一个最常见的流程是。1)创建一个材质2)创建一个Unity Shader,并把它赋给上一步创建的材质3)把材质赋给要渲染的对象4)在材质面板中调整Unity Shader的属性,以得到满意的效果下图显示了Unity Shader和材质是如何一起工作来控制物体的渲染的。Uni...转载 2017-04-20 10:07:38 · 1114 阅读 · 0 评论 -
Unity5.3.5f1 与 VS2013 环境搭建配置
先安装VS2013 软件,用密钥激活。后安装UnitySetup64-5.3.5f1.exe 。结束后关闭软件,用UniPatcher_v1.1.exe 激活。在点击打开链接网址下载vstu2013.msi安装vstu2013.msi打开UnityAssets -> Import Package -> Visual Sutio 2013 Tools。点击之后,再选择导入原创 2017-04-19 21:44:22 · 3377 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第6章 开始 Unity 中的基础光照
转自冯乐乐的《Unity Shader入门精要》通常来讲,我们要模拟真实的光照环境来生成一张图像,需要考虑3种物理现象。首先,光线从光源中被发射出来。然后,光线和场景中的一些物体相交:一些光线被物体吸收了,而另一些光线被散射到其他方向。最后,摄像机吸收了一些光,产生了一张图像。 在光学中,我们使用辐照度来量化光。对于平行光来说,它的辐照度可通过计算在垂直于l的单位面积上单位...转载 2017-05-20 15:48:52 · 1431 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第10章 高级纹理
立方体纹理在图形学中,立方体纹理是环境映射的一种实现方法。环境映射可以模拟物体周围的环境,而使用了环境映射的物体可以看起来像镀了层金属一样反射出周围的环境。和之前见到的纹理不同,立方体纹理一共包含了6张图像,这些图像对应了一个立方体的6个面,立方体纹理的名称也由此而来。立方体的每个面表示沿着世界空间下的轴向观察所得的图像。和之前使用二维纹理坐标不同,对立方体纹理采样我们需要提供一个三维的纹转载 2017-06-16 23:06:41 · 3020 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第11章 让画面动起来
Unity Shader 中的内置变量动画效果往往都是把时间添加到一些变量的计算中,以便在时间变化时画面也可以随之变化。Unity Shader 提供了一系列关于时间的内置变量来允许我们方便地在Shader中访问允许时间,实现各种动画效果。下表给出了这些内置的时间变量。纹理动画纹理动画在游戏中的应用非常广泛。尤其在各种资源都比较局限的移动平台上,我们往往会使用纹理动画来代替复杂转载 2017-06-17 23:11:46 · 1857 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第16章 Unity中的渲染优化技术
移动平台的特点为了尽可能一处那些隐藏的表面,减少overdraw(即一个像素被绘制多次),PowerVR芯片(通常用于ios设备和某些Android设备)使用了基于瓦片的延迟渲染(TBDR)架构,把所有的渲染图像装入一个个瓦片中,再由硬件找到可见的片元,而只有这些可见片元才会执行片元着色器。另一些基于瓦片的GPU架构,如Adreno(高通的芯片)和Mali(ARM的芯片)则会适应early-Z转载 2017-06-27 21:41:33 · 1055 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第15章 使用噪声
转载自 冯乐乐的 《Unity Shader 入门精要》消融效果消融效果常见于游戏中的角色死亡、地图烧毁等效果。这这些效果中,消融往往从不同的区域开始,并向看似随机的方向扩张,最后整个物体都将消失不见。我们将学习如何在Unity中实现这种效果。效果如下图所示。要实现上图中的效果,原理非常简单,概括来说就是噪声纹理+透明度测试。我们使用对噪声纹理采样的结果和某个控制消融程度的阈值转载 2017-06-25 22:47:08 · 2053 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第14章非真实感渲染
转载自 冯乐乐的 《Unity Shader 入门精要》尽管游戏渲染一般都是以照相写实主义作为主要目标,但也有许多游戏使用了非真实感渲染(NPR)的方法来渲染游戏画面。非真实感渲染的一个主要目标是,使用一些渲染方法使得画面达到和某些特殊的绘画风格相似的效果,例如卡通、水彩风格等。卡通风格的渲染卡通风格是游戏中常见的一种渲染风格。使用这种风格的游戏画面通常有一些共有的特点,例如物转载 2017-06-25 13:56:34 · 3508 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第13章 使用深度和法线纹理
转载自 冯乐乐的 《Unity Shader 入门精要》获取深度和法线纹理虽然在Unity里获取深度和法线纹理的代码非常简单,但是我们有必要在这之前首先了解它们背后的实现原理。深度纹理实际上就是一张渲染纹理,只不过它里面存储的像素值不是颜色值而是一个高精度的深度值。由于被存储在一张纹理中,深度纹理里的深度值范围是[0,1],而且通常是非线性分布的。那么,这些深度值是从哪里得到的呢?总体转载 2017-06-24 19:09:19 · 6669 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第8章 透明效果
转载自 冯乐乐的 《Unity Shader入门精要》透明是游戏中经常要使用的一种效果。在实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道。当开启透明混合后,当一个物体被渲染到屏幕上时,每个片元出了颜色值和深度值之外,它还有另一个属性——透明度。当透明度为1时,表示该像素是完全不透明的,而当其为0时,则表示该像素完全不会显示。在Unity中,我们通常使用两种方法来实现透明效果:...转载 2017-06-08 14:12:54 · 2236 阅读 · 0 评论 -
Unity Shader入门精要学习笔记 - 第12章 屏幕后处理效果
建立一个基本的屏幕后处理脚本系统屏幕后处理,顾名思义,通常指的是在渲染完整个场景得到屏幕图像后,再对这个图像进行一系列操作,实现各种屏幕特效。使用这种技术,可以为游戏画面添加更多艺术效果,例如景深、运动模糊等。因此,想要实现屏幕后处理的基础在于得到渲染后的屏幕图像,即抓取屏幕,而Unity为我们提供了这样一个方便的接口OnRenderImage函数。它的函数声明如下:MonoBehav转载 2017-06-19 23:14:21 · 4578 阅读 · 3 评论