自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (1)
  • 收藏
  • 关注

原创 基于回调式行为树的技能系统与编辑器(一) 回调式行为树

基于回调式行为树的技能系统与编辑器 回调式行为树AI决策1.状态机2.行为树2.1 行为树节点2.2 行为树轮询需求与设计1.节点2.流程实现AI决策对于AI决策机制,常见的有状态机与行为树:1.状态机当状态少而简单的时候,使用状态机可以较为快速简洁的实现AI的控制,最粗暴的方式莫过于if-else的分支实现,但是由于当今的游戏系统都较为复杂,状态机容易最后变为非常可怕的网状结构...

2021-07-08 17:09:49 723

原创 Unity游戏性能优化 MaterialPropertyBlock

Unity游戏性能优化 MaterialPropertyBlock1.概念2.对比2.1 Material(Instance)2.2 SharedMaterial2.3 MaterialPropertyBlock3.使用3.1 MeshRenderer3.2 SpriteRenderer1.概念顾名思义,就是保存材质属性的块,相当于将其抽象为一个大型机械上的可拔插的零件,这样就不需要在每次调用时都得换一个机械了,减少内存占用。2.对比2.1 Material(Instance)每一个Materia

2020-05-22 20:39:57 2292

原创 DrawCall漫谈

感觉现在对于DrawCall的解释十分专业,并不能很好的理解。网上对于DrawCall的定义通常是CPU对GPU的一次调用。但是一旦理解了一个本质,DrawCall就能被抽象成很通俗易懂的东西:图形学的本质就是往屏幕上画东西。那DrawCall是什么,DrawCall就是画笔,在Unity中有DrawCall合批的概念,什么样的DrawCall能够合批呢,就是那些同材质、同贴图的,那这个时候把材质和贴图理解为颜料。每次DrawCall的调用,就是在往一个图层上画画,如果你要使用不同的颜料,那么肯定得换

2020-05-22 20:20:49 338 2

原创 空间管理 详解八叉树

空间管理 八叉树前言数据结构插入删除查询前言首先先明确一个概念,八叉树只做空间管理,而碰撞相关的检测是另外的东西数据结构插入删除查询...

2020-01-19 19:31:23 2112

原创 图形学 画线算法

1.DDA 画线法将乘法减少,只剩下加法y=kx+by=kx+by=kx+b2.中点画线法改进效率,将浮点加法变为整数加法Ax+By+C=0Ax+By+C=0Ax+By+C=03.Bresenham 画线法

2019-11-04 19:56:51 753

原创 Unity问题记录(三)UpdateScreenManagerAndInpit

Unity问题记录(三)UpdateScreenManagerAndInpit占用大量CPU问题解决方案问题空项目中 UpdateScreenManagerAndInpit在Profile中显示占用大量CPU解决方案1.把无用的usb拔掉2.将第二块屏幕的连接线拔掉...

2019-09-04 15:47:28 399 1

原创 Unity问题记录(二)自定义EditorWindow,当资源发生变化时,报Operation is not valid due to the current state of the object

Unity问题记录(二)自定义EditorWindow,当资源发生变化时,报Operation is not valid due to the current state of the object1.问题2.原因3.解决方案1.问题自定义EditorWindow,当资源发生变化时,报InvalidOperationException: Operation is not valid due t...

2019-08-08 15:40:11 669

原创 Unity战斗框架 技能框架

Unity战斗框架 技能框架1.简介2.技能对象2.1 技能触发2.2 技能执行2.2.1 技能单元处理器2.3 技能接受2.技能流程2.1 初始化流程1.简介该框架基本可以概括为以下这句话:释放某技能后,先左斩一下(播个动画放个特效),触发怪物浮空,再点一下,右斩一下(播个动画放个特效),触发怪物掉血伤害先左斩后右斩,说明技能需要是一个链状的触发结构再点一下,技能链间需要有对应的连接...

2019-08-05 18:00:12 15950 14

原创 Unity3D资源管理——Excel表自动生成代码文件(优化版)

Unity3D资源管理——Excel表自动生成代码文件(优化版)1.旧版本代码1.新版本代码核心逻辑可以使用代码模板来进行代码的替换,摒弃之前的使用硬写的方式进行编码,提高可读性1.旧版本代码 private static string GenerateCode(string fileName) { StringBuilder code = new StringBui...

2019-08-01 16:58:13 614 1

原创 Unity战斗框架 优化Animator动画状态机排线

Unity战斗框架 优化Animator动画机排线1.优化前后效果图2.优化方法3.优劣1.优化前后效果图优化前优化后2.优化方法前后的布线差距非常大,简直是从一团乱麻变味了井井有条,这一切都得益于AnyState状态,即中间状态。通过一个枢纽进行转发,有利于梳理状态之间的关系。PS:配置AnyState要注意将这个选项取消掉,不然会出现鬼畜状态,即一直从自身切回自身3....

2019-07-23 11:04:56 1424

原创 UnityShader开发之死亡消融效果

UnityShader开发之死亡消融效果Shader "Unlit/Dissolve"{ Properties{ _Diffuse("Diffuse", Color) = (1,1,1,1) _DissolveColorA("Dissolve Color A", Color) = (0,0,0,0) _DissolveColorB("Dissolve Color B", Colo...

2019-07-22 20:57:16 600

原创 Unity问题记录(一) git上传 场景中物体出现代码丢失

Unity问题记录(一) git上传场景中物体出现代码丢失1.问题2.原因3.解决方法1.问题git上传场景后出现场景中的GameObject上的组件丢失2.原因由于组件是存在与外部工程(.dll)中,但是存储dll的文件夹的.meta文件没上传,导致Unity没找到对应的组件3.解决方法上传存储文件夹的.meta文件...

2019-07-12 11:46:08 686

原创 Unity3D相机系统 视线上有碰撞体 透视

Unity3D相机系统 视线上有碰撞体 透视1.使用场景2.算法2.1 逻辑2.2 核心代码1.使用场景让人感觉很屌,这就够了可以使用在FPS外挂上(?)2.算法2.1 逻辑从相机射出一条射线(视线)指向聚焦的物体如果视线上出现碰撞体,则修改其材质的透明度,并缓存如果移出碰撞的视线后,则将之前的缓存的碰撞体的材质的透明度设置回原来的,并置空2.2 核心代码 ...

2019-07-02 19:40:02 933

原创 Unity3D相机系统 屏幕震动

Unity3D相机系统 屏幕震动1.使用场景2.算法2.1 逻辑2.2 核心代码1.使用场景屏幕震动通常被用来添加代入感,例如被巨物击中时、打击到对手时触发震动,都将带给用户更强的打击感。2.算法2.1 逻辑缓存初始位置每一帧取得以初始位置为球型的空间中的一个随机点,将位置赋值给相机震动完后将相机位置恢复为初始位置2.2 核心代码赋值需要的数据 /// ...

2019-07-02 19:06:55 633

原创 数据结构笔记(邓俊辉 学堂在线课程) 排序算法

数据结构 排序算法气泡排序归并排序选择排序插入排序气泡排序(向量)遍历序列,当检测到序列中有相邻的不无序对则交换他们的位置最坏的效率为O(n^2)优化举措:(1)当在遍历时,如果后续的序列时有序的,应当规避掉无用的遍历,即在每次遍历时都应缓存下当前无序的最右侧元素的秩,用作下次遍历时使用归并排序(向量)将无序的序列划分为左右两个子序列最坏效率 为O(nlogn)选择排序(...

2019-06-15 10:52:03 900

原创 Unity战斗框架 动画驱动的角色连击系统

战斗框架 动画驱动的角色连击系统功能实现技能信息类角色控制类功能利用动态添加动画事件,驱动技能相关的释放点击J进行攻击释放每次点击需要在下一段攻击时才会生效实现技能信息类using System;using System.Collections.Generic;using System.Linq;using System.Text;public class Skill...

2019-06-05 20:52:15 1381

原创 MySQL 数据库、表的创建、导出与C#代码的增删改查

MySQL 数据库、表的创建、导出与增删改查

2019-05-21 21:26:25 683

原创 FinalIK 中 FABR IK 算法解析

FinalIK 中 FABR IK 算法解析1.算法分析1.1 骨骼位置演算2.实现2.1 逻辑流2.2与CCD的区别1.算法分析FABR IK,即 Forward and Backward Reaching Inverse Kinematics1.1 骨骼位置演算(1)在结算前处理一下数据:1.缓存骨骼点的位置和角度2.计算骨骼的长度(当前骨骼点到下一个骨骼点的长度)3.计算当前...

2019-05-20 14:55:34 3141

原创 PhotonServer 基础 服务器架设

PhotonServer服务器架设1.下载2.安装3.HelloWorld1.下载1.进入网站https://www.photonengine.com/zh-CN/sdks#realtime2.选中下载标签为Server3.点击Icon上的More,然后点击下载2.安装双击、跟着安装就可以了3.HelloWorld建立一个项目,并添加所需引用...

2019-05-17 11:57:31 354

原创 FinalIK 中 CCDIK 算法解析

FinalIK 中 CCDIK 算法解析1.算法分析1.1 逻辑流1.2 文字解释2.实现1.算法分析1.1 逻辑流1.2 文字解释2.实现

2019-05-09 11:23:30 4132 4

原创 3D数学基础 仿射变换 齐次坐标空间

3D数学基础 仿射变换 齐次坐标1.定义1.1 线性变换1.2 仿射变换(平移变换)1.3 齐次坐标空间1.定义1.1 线性变换线性变换指的是可以保留矢量加和标量乘的变换。满足以下两个条件f(x)+f(y)=f(x+y)f(x)+f(y)=f(x+y)f(x)+f(y)=f(x+y)kf(x)=f(kx)kf(x)=f(kx)kf(x)=f(kx)例如缩放,用来表示统一放大k...

2019-05-07 15:36:54 423

原创 3D数学基础 旋转 四元数与矩阵

旋转 四元数与矩阵1.旋转:用矩阵表示1.1 2D旋转1.1.1 x=1,y=01.1.2 x=0,y=01.1.3 x=1,y=11.1.4 x,y为任意数1.2 3D旋转2.旋转:用四元数表示2.1 2D旋转(复数)1.旋转:用矩阵表示1.1 2D旋转1.1.1 x=1,y=0p→(1,0) \overrightarrow{p}(1,0) p​(1,0)旋转θ度后,得到p→′(cos...

2019-05-05 15:44:49 292

原创 Vector3 数学方法

Vector3 数学方法1.Vector3.OrthoNormalize1.1参数:1.2使用场景1.Vector3.OrthoNormalize1.1参数:(1)normal:法线(2)tangent:切线1.2使用场景传入的法线和切线,按照法线为法线,调整切线的位置,使之垂直并归一化(1)未矫正前(2)矫正后...

2019-04-24 20:55:14 1522

原创 UnityShader开发之径向模糊(可调节中心点 、 可调整中心点周围有一圈不模糊)

UnityShader开发之径向模糊1.算法2.具体代码3.效果图1.算法2.具体代码3.效果图模糊前模糊后

2019-04-14 21:05:50 1962

原创 Unity3D节点编辑器 树状节点布局算法

Unity3D节点编辑器——树状节点布局算法1.使用场景2.算法详情2.1节点布局算法2.2 点与点间的画线算法3.核心代码3.1 节点数据结构3.2 节点所需宽度计算方法3.3 节点之间画线方法3.4 绘制节点方法1.使用场景在编辑器中显示出树状图,希望能满足以下几个要求:(1)节点将会根据父节点的中点作为中间,分两边布局(2)节点与节点之间不能覆盖,并留有一些空隙2.算法详情2....

2019-03-31 20:21:24 2358 2

原创 Unity3D编辑器扩展 子窗体显示(GUILayout.Widnow)

Unity3D编辑器扩展——子窗体显示(GUILayout.Widnow)1.使用场景2.具体代码2.1 Monobehavior中调用2.2 EditorWindow中调用1.使用场景(1)在Unity中创建一个节点编辑器时,需要在主窗体中创建一个小窗体,方便操作2.具体代码在官网的API解释中只能搜到Monobehavior上的用法,但是后面我在其他的插件中发现了在EditorWind...

2019-03-31 19:40:34 3400

原创 Linux 用户/群组/文件权限操作 命令

用户/群组/文件权限操作 命令1.用户操作1.1 创建用户1.2 设置用户属性1.2.1 改名1.2.2 设置用户密码1.2.3 修改组1.3 删除用户2.群组操作2.1 创建群组2.2 设置群组属性2.2.1 修改群名称2.3 删除群组3.文件权限操作3.1 查看文件/文件夹权限3.2 改变文件从属3.3 改变文件权限1.用户操作1.1 创建用户输入命令useradd [UserNam...

2019-03-10 17:15:53 471

原创 UnityShader开发之阴影

UnityShader开发之阴影概念1.ShadowMap2.阴影映射概念1.ShadowMap2.阴影映射

2019-02-24 21:06:05 1326

原创 TypeScript开发之安装与编译

TypeScript开发之安装与编译1.安装TypeScript1.1 安装npm1.2 安装cnpm1.3 使用cnpm安装TypeScript2.在VSCode中进行编译2.1 创建文件2.2 创建tsc配置文件2.3 自动生成js代码2.3.1 设置编译后文件放置位置2.3.2 运行任务2.4 创建html文件并打开1.安装TypeScript1.1 安装npm在node官网上下载...

2019-02-13 21:12:24 219

原创 UnityShander开发之透明

UnityShander开发之透明1.渲染顺序2.混合因子使用场景实现代码1.渲染顺序开发透明相关的效果,需要注意的是渲染顺序需要正确,如果渲染在2.混合因子使用场景实现代码...

2019-02-12 22:03:04 383

原创 版本控制—在Linux上搭建Git服务器

版本控制—在Linux上搭建Git服务器1.安装2.配置2.1服务端配置2.2客户端配置1.安装2.配置2.1服务端配置2.2客户端配置

2019-01-30 20:58:46 421

原创 VSCode插件开发之安装

VSCode插件开发之安装1.环境2.具体操作2.1 打开命令行2.2 使用npm下载代码生成器2.3使用yo生成HelloWorld2.4 使用VSCode运行插件工程1.环境操作系统:Windows 10VSCode版本: v1.30.2npm版本:v6.4.12.具体操作2.1 打开命令行使用 Ctrl +R 唤出在打开一栏输入cmd,确定后就会打开命令行2.2 使用n...

2019-01-23 09:59:49 438

原创 UnityShader开发之常见渲染路径

UnityShader开发之常见渲染路径概念1. 光照处理方式1.1 逐顶点处理1.2 逐像素处理1.3 球谐函数2. 渲染路径2.1前向渲染2.1.1原理2.2. 延迟渲染2.2.1原理2.2.1缺点2.3 两种模式的比较概念1. 光照处理方式光照估计是指从图片中获取光照信息,从而降低光照对纹理的影响。传统的光照估计依赖于光源方向和法线方向的估计。1.1 逐顶点处理在Vertex...

2019-01-13 16:56:04 415

原创 游戏设计模式——MVC、MVP与MVVM模式的差别

   

2018-12-31 22:03:41 686

原创 UnityShader开发之透明与混合因子

1.渲染顺序        对于开发具有透明效果的Shader而言,渲染顺序十分重要,为了解决渲染顺序的问题,Unity提供了渲染队列:        名称 描述 Background 这个渲染队列会在任何其他队列之前被渲染,我们通常使用该队列来渲染那些需要绘制在背景上的物体 Geometry 默认的渲染队列,大多数物体都是用这个队列,不透明物体使用这个队列...

2018-12-31 21:49:07 242

原创 3D数学基础 坐标空间及转换

1.概念 在游戏开发中,我们经常需要明确几个坐标空间: (1)切线空间:通过法线贴图中两个像素之间的变化值求出的斜率得出的方向向量,即切线、副切线为x、y轴,法线为z 轴的坐标空间。 (2)模型空间:以模型中心点为原点,模型右边的方向向量为x轴,模型前面的方向向量为z轴,模型上面的方向向...

2018-12-30 21:58:51 1013

原创 UnityShader开发之纹理 - 法线

1.概念        凹凸映射一般是在需要表现模型的精致,又不希望使用过多的三角面进行光照渲染的场景中使用。        有两种主要的方法来进行凹凸映射:一种是用高度纹理(height map)来模拟表面位移,然后得到一个修改后的法线值,这种方法也叫高度映射(height mapping);另一种方法则是用一张法线纹理(normal map)来直接存储表面法线,这种方法被称为法线映射(...

2018-12-25 21:27:45 285

原创 UnityShader开发之纹理 - Unity中的图像插值 Point、Bilinear、Trilinear

图像插值就是当图像进行放大/缩小时,图像原有的像素数量不足以满足需求,例如从3X3的像素矩阵往4X4的像素矩阵变换的时候,就会出现像素值不知该如何填充的问题,而图像插值算法就是为了解决这个问题 上图就是Unity中选择贴图时出现的属性面板,箭头标识的位置就是可供选择的插值算法; 将最大尺寸调小,然后有插值与没有插值的情况十分明显,左侧有明显的颗粒感...

2018-12-08 18:25:38 4997 2

原创 UnityShader开发之光照 - 简单光照模型 - 兰伯特(Lambert)漫反射模型参数分析

 1.概念公式漫反射 公式: 其中  为漫反射模型计算最终的颜色值 是材质的漫反射颜色 是光源颜色 是经验模型,需要两个变量能影响到最终值,用加、减法容易触发溢出,于是使用乘法(个人观点) 是表面法线 是指向光源的单位矢量  表示将投影到,获得在方向上的分量的标量(大小),即能被摄像机看到的值。从全局来看的话大致是这张图黑到白为[0,1],乘...

2018-11-25 12:16:47 2187 1

原创 UnityShader开发之光照 - 简单光照模型 - Phong反射光模型参数分析

1.概念light color = emissive + ambient + diffuse + specluaremissive:自发光ambient:环境光diffuse :漫反射光specluar:镜面光 Phong模型 镜面光公式为   为求得的高光颜色值为灯光颜色为材质的高光反射颜色 是经验模型,需要两个变量能影响到最终值,用加、减法容易触发溢...

2018-11-22 16:40:09 980 1

gitee地址.txt

详情查看 https://blog.csdn.net/qq_28474981/article/details/98061266

2019-10-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除