![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity
文章平均质量分 90
lsw5530
这个作者很懒,什么都没留下…
展开
-
Unity 简易对象池
“每隔x秒随机产生10-20个物体(cube或者sphere),要求显示在屏幕上,并在x秒的显示后将其回收”。看似简单的题目小菜也楞是在紧张中满头大汗的调试了两个小时左右才得以完成。本篇就来讨论下对象池的那些事。对象池的概念也算是老生常谈的话题了,小菜简单直白的理解就是解决瞬间克隆(Instance)大量对象带来的性能问题,将预创建和已使用过的对象缓存起来供下次的直接使用,用内存来换取性能的一种手段。面试中面试官常常提及到你的性能优化手段和你解决过游戏卡顿的实操方法。对象池就...转载 2020-05-22 22:52:51 · 1378 阅读 · 0 评论 -
Unity AI决策-行为树
行为树。小菜最早接触到这个内容的身影是在一款捕鱼游戏的机器人模拟上,模拟玩家登录游戏,进入大厅,发射子弹,退出游戏等过程中的行为。由于最近工作的需要,小菜又再次的对其做了一些内容的学习。将之前零散的知识面汇集起来,同时也以理论结合实践的方式,简单构建了一个自己的编码体系结构。行为树概念行为树是一棵用于控制 AI 决策行为的、包含了层级节点的树结构。自顶向下的遍历,通过一些条件来搜索这颗树,最终确定需要做的行为(叶节点),并且执行它。简单的说就是用来模拟真人player的行为的。...转载 2020-05-22 22:43:46 · 2556 阅读 · 2 评论 -
Unity FSM有限状态机
上篇短文小菜展示了行为树的内容,既然说了行为树就不得不提及一下它的好兄弟状态机,关于两者在职责上相似在实现上又不同的两个亲兄弟,网上的作者早已争论的喋喋不休了。和行为树类似,有限状态机同样可以担任ai自主决策的工作。我们更多的见到它的身影是在连招系统(左劈右砍上挑)和场景中的状态管理上。行为树更像是:而状态机则是:小菜也是菜菜的小菜,只有轻描淡写的拿这两张图做简短的比较了。有限状态机有限状态机的有限代表的是由一组有限多个状态,它的组成便是这有限多个状态、...转载 2020-05-22 22:36:23 · 799 阅读 · 0 评论 -
Vuforia直播笔记
视频回放地址:https://www.bilibili.com/video/av79875925/10:42 PTC Vuforia产品家族1.Vuforia Studio:面向企业内容创建者,拖放式(低/无代码)轻松创建AR体验2.Vuforia Engine:面向App开发者,支持多平台3.Vuforia expert capture:快速补货并传递专家视角专业知识,快速捕获并传递专...原创 2020-03-04 22:12:04 · 887 阅读 · 0 评论 -
Jenkins使用记录-添加安卓打包工程
一.基础部分1.新建空项目,从原有项目地址CheckOut。Unity打开后设置发布目标为Android。2.新建Jenkins项目,从原有PC项目中Copy所有参数,并修改为Android形式。3.其中压缩部分命令行不需要。二.Jenkins修改1.除了PC中的几个构建参数外,安卓中,增加多线程渲染布尔参数“MulRendering”和布尔参数“IL2CPP”。2.Deb...原创 2020-03-04 22:11:36 · 215 阅读 · 0 评论 -
Jenkins使用记录-向Unity传参
一.Jenkins中设置构建参数:1.增加WorkPath之后的第二个构建参数“Version”,默认值0.1。2.增加第三个构建字符参数“Name”,默认值RealFram。3.增加第四个构建字符参数“Build”,默认值0。4.增加第五个构建布尔值参数“Debug”,默认值true。二.Jenkins中设置需要给Unity3d构建时传递的参数:1.在Unity3d命令行...原创 2020-03-04 22:11:26 · 1163 阅读 · 1 评论 -
Jenkins使用记录-发布exe并压缩
一.发布1.修改Unity3d编辑器命令行为:“-projectpath E:\MindjetsManage\Jenkins_Learning\RealFram -quit -batchmode -executeMethod BuildApp.Build -logFile "D:\log.txt"” ,执行编辑器打包的方法。二.使用批处理窗口进行压缩。2.批处理窗口下,先cd至Win...原创 2020-03-04 22:11:15 · 994 阅读 · 0 评论 -
Jenkins使用记录-Jenkins调用命令行,执行Unity编辑器方法
1.Unity中编写编辑器扩展方法TestEditor.JenkinsTest()。2.如果是在命令行窗口调用,执行前需先关闭Unity项目,cd到相应Unity版本的安装目录,例如“D:\Program Files\Unity2018.2.6f1\Editor”3.命令行窗口中调用Unity.exe写法:unity.exe-projectpath E:\Work\ProjectName...原创 2020-03-04 22:10:59 · 903 阅读 · 0 评论 -
Jenkins使用记录-添加项目
1.新建项目:New Item-选择Freestyle project-输入项目名“test”。2.Discard old builds:可以设置过期天数,最大保留app数目。3.This project is parameterized:添加参数化构建所需的参数。4.Advance->Use custom workspace:设置工程目录。4.构建时运行批处理命令注意:...原创 2020-03-04 22:10:32 · 279 阅读 · 0 评论 -
Jenkins使用记录-安装配置
1.下载地址:https://jenkins.io/download/2.安装位置:D:\Program Files (x86)\Jenkins ,因为项目比较占用空间,所以建议安装在系统盘之外的分区。3.安装JDK,配置Java环境变量(略)。4.遇到8080端口占用问题,解决方法为命令行“cd D:\Program Files (x86)\Jenkins && ja...原创 2020-03-04 22:10:20 · 120 阅读 · 0 评论 -
How To Use C# Events In Unity DLLs
DLLs—like SWCs in Flash—are an extremely handy way to build your code into reusable modules. Unfortunately, Unity has some quirks that can lead to crashes on iOS and other environments that don’t supp...转载 2019-11-01 23:56:15 · 92 阅读 · 0 评论 -
表面着色器笔记
什么是光照模型 表面着色器的数据流 自定义光照模型 。。。 创建BlinnPhong镜面反射模型 。。原创 2019-10-06 00:07:52 · 80 阅读 · 0 评论 -
课时17 第十七课 3D数学基础 3 - 矩阵
课时17 第十七课 3D数学基础 3 - 矩阵 1.矩阵的维度和记法2.矩阵的转置3.矩阵和标量的乘法4.矩阵和矩阵的乘法5.6.单位矩阵 课时18 3D数学基础 4 - 矩阵和行列式 1.2D旋转矩阵...原创 2019-09-29 16:04:12 · 118 阅读 · 0 评论 -
课时16 第十六课 3D数学基础 2 - 向量
课时16 第十六课 3D数学基础 2 - 向量 1.向量:既有大小和方向的量,没有位置。2.Unity中的向量类型3.向量加法4.向量减法5.向量和标量乘法6.向量点积:对应分量分别相乘,然后相加,得到标量7.向量点积的几何意义8.向量叉积9.向量叉积的几何意义:求法向量10. 向量叉积的几何意义:Unity中面的法向...原创 2019-09-29 15:41:02 · 101 阅读 · 0 评论 -
课时15 第十五课 3D数学基础 1 - 坐标系
课时15 第十五课 3D数学基础 1 - 坐标系 1.坐标系2.2D模型中的坐标系(笛卡尔坐标系)3.2D中的世界坐标系4.3D中的模型坐标系:z轴为正是左手坐标系,为负是右手坐标系5. 3D中的世界坐标系6.引擎中,是靠旋转坐标系达到旋转物体的目的7.摄像机视坐标系8.屏幕坐标系...原创 2019-09-29 15:13:12 · 124 阅读 · 0 评论 -
课时77 Fragment shader - Cube纹理采样
课时77 Fragment shader - Cube纹理采样 1.需求:让一个模型表面反射一个Cube纹理,纹理相对静止,根据摄像机相对位置的不同,反射的图像角度实时变化。2.代码:Shader "Custom/Lesson77"{ //课时77 Fragment shader - Cube纹理采样 Properties { _Cube("Cubemap",Cube...原创 2019-09-28 20:25:57 · 270 阅读 · 0 评论 -
课时73 Fragment shader - 纹理法线与凹凸贴图 1
课时73 Fragment shader - 纹理法线与凹凸贴图 1 课时74 Fragment shader - 纹理法线与凹凸贴图 2 1.灰度图范围0~1,高度图存放高度值。高度图每个像素可以是1或多个字节,一般用不到,可以从灰度图生成法线纹理(比如,将图标的TextureType改为Normalmap,然后勾选“Create from GrayScale”)。2.需求...原创 2019-09-28 15:22:37 · 297 阅读 · 0 评论 -
课时70 Fragment shader - Alpha 与 blend 运算
课时70 Fragment shader - Alpha 与 blend 运算 1.Zwrite:深度写入,默认是Zwrite On。如果需要绘制实心物体需要开启,如果绘制半透明物体,需要关闭深度写入。见:ShaderLab: Culling & Depth Testing2.Ztest:默认LEqual,当深度值小于等于深度缓冲区的值,则写入(用Zwrite)并覆盖深度缓冲...原创 2019-09-28 00:28:45 · 218 阅读 · 0 评论 -
课时60 Fragment shader – UV动画 1
课时60 Fragment shader – UV动画 11.需求:将具有m行n列格子的图片在一个平面上,按照从上向下,从左至右顺序播放每一个格子;也可以设置播放顺序为从下向上,从右制作反序播放。2.代码:using UnityEngine;using System.Collections; public class SetTextureUVST : MonoBehaviour...原创 2019-09-27 07:32:03 · 267 阅读 · 0 评论 -
VSCode快捷键汇总
光标下移 (cursorDown) Alt+K 光标上移 (cursorUp) Alt+I 光标移动到行首 (cursorhome)Alt+H 光标移动到行尾(cursorhome)Alt+; 在上面插入行 (默认)Ctrl+Shift+Enter 在下面插入行(默认)Ctrl+Enter 左移字符(cursorLeft) Atl+J 右移字符(cursorRight)Alt+L...原创 2020-03-04 22:10:01 · 381 阅读 · 0 评论 -
Shader实现顶点动画—流动的海水效果
代码如下:其中,_MainTex_ST的ST是scale 和translation的意思 。详见:https://blog.csdn.net/huahuakucha/article/details/88690714// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shad...原创 2019-09-20 21:37:35 · 1647 阅读 · 0 评论 -
Shader实现UV动画
代码如下:// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/UVShader"{ Properties { _MainTex ("Texture", 2D) = "white" {} _SubTex ("Texture", 2...原创 2019-09-20 22:57:43 · 735 阅读 · 0 评论 -
Shader实现顶点动画和UV动画_流动的海水效果
代码如下:// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'Shader "Custom/SinShader"{ Properties { _MainTex ("Texture", 2D) = "white" {} _SubTex("Texture",2D)="...原创 2019-09-21 00:00:08 · 1119 阅读 · 0 评论 -
Shader表面着色器结构分析
1:表面着色器包括4个函数: (1): 顶点变换函数; (可选参数)(2): 表面着色函数; (3): 光照模型; (可选参数)(4): 最终颜色修改函数; (可选参数)2: 表面着色器最终会被编译为一个复杂的顶点着色程序3.定义入口函数1:#pragma surface +入口函数名称 +光照模型 +[Options]2: #pragma surfa...原创 2019-09-21 10:27:34 · 670 阅读 · 0 评论 -
Unity渲染通道通用指令总结
一.LOD1:LOD Level of Detail, 根据LOD来设置使用不同版本的Shader,官方链接见:Shader Level of Detail2:着色器中给SubShader一个LOD值,程序来设置这个shader的LOD值,只有从上往下第一个小于等于LOD值subShader才会被执行;3: 每个shader最多只会有一个SubShader被使用;4: 通过Shad...原创 2019-09-21 19:16:26 · 1268 阅读 · 0 评论 -
GrabPass简单案例
GrabPass使用介绍:1:使用抓屏通道, GrabPass {} 或 GrabPass { “ 纹理名称”}; _GrabTexture访问2: 后续的Pass通道使用这个抓屏;3: 编写案例 (1): 创建一个顶点片元着色器; (2): 将这个着色器放到Overlay队列 (3): 使用GrabPass通道截屏,并定义好变量来接收 (3): 设置顶点的UV...原创 2019-09-22 00:16:58 · 1309 阅读 · 0 评论 -
CG标准函数库
(1)数学函数函数 功能描述 abs(x) 返回输入参数的绝对值 acos(x) 反余切函数,输入参数范围为[-1,1], 返回[0,π]区间的角度值 all(x) 如果输入参数均不为0,则返回ture; 否则返回flase。&&运算 any(x) 输入参数只要有其中一个不为0,则返回true。 asin(x) 反正弦...转载 2019-09-22 15:07:01 · 120 阅读 · 0 评论 -
课时19 3D数学基础 5 - 矩阵的逆
课时19 3D数学基础 5 - 矩阵的逆 1.2D旋转矩阵2.2D缩放矩阵3.3D旋转矩阵,对应3个轴向4.3D缩放矩阵5.变换的种类①线性变换包括:旋转,缩放,镜像,切变,正交投影。平移不属于线性变换。②仿射变换包括:线性变换,平移等。6.变换的组合 课时20 3D数学基础 6 - 矩阵和变换 1.2D平移矩阵2....原创 2019-09-23 18:35:51 · 258 阅读 · 0 评论 -
课时27 Vertex Shader - 顶点数据的输入与输出 1
课时27 Vertex Shader - 顶点数据的输入与输出 1 1.一个函数有多个重复语义输出会报错,如果需要多输出的话,除了POSITION和COLOR,float2格式的TEXCOORD系列也可以。2.POSITION语义的向量,第四个分量不能为0。3.语义是为了方便函数间传递信息,函数内部可以对不同语义但相同类型的变量进行操作。 课时28 Vertex Shader...原创 2019-09-23 18:37:07 · 646 阅读 · 0 评论 -
课时38 图形学入门 - 法向量与光照
课时38 图形学入门 - 法向量与光照 1.法向量:垂直于平面的向量,一个点有两个法向量。图形学只取正方向的法向量。2.求光向量与法线夹角公式3.计算法向量:左手坐标系...原创 2019-09-23 18:36:18 · 418 阅读 · 0 评论 -
课时39 基础实例 - C# 光照渲染 1
课时39 基础实例 - C# 光照渲染 1 1.法向量存在于模型空间中,光照方向存在于世界空间中。两个向量需要在世界空间中进行计算。2.法向量需要转换至世界空间,转换时机有两种:①模型的初始法向量跟随模型顶点坐标一起变换,直至世界空间②待模型顶点已转至世界空间后,根据世界空间的两个向量,求得世界空间的法向量。这里的Coding是按照第二种方式来的。 课时40 基础实例- C# 光...原创 2019-09-23 21:42:33 · 183 阅读 · 0 评论 -
Unity3D光照前置知识——Rendering Paths(渲染路径)及LightMode(光照模式)译解
简述Unity supports different Rendering Paths. You should choose which one you use depending on your game content and target platform / hardware. Different rendering paths have different performance cha...转载 2019-09-23 23:11:08 · 617 阅读 · 0 评论 -
Unity3D内建参数文档翻译与解析——Built-in shader variables
本篇将会结合Unity3D官方文档对Unity3D内置参数或函数进行讲解及文档翻译。本篇将会持续更新,更新结束后这一句话将会删除。光照部分本次讲解的内容为光照相关,因为我接下来的篇章将会对Unity3D光照相关的知识进行分析,所以在此处对一些光照方面的基础性的知识作一些整理。本次的内容为光照相关的内建参数。注:为了避免网络上中文术语混乱带来的理解障碍,一些专业术语将保留使用英语。Li...转载 2019-09-23 23:12:27 · 269 阅读 · 0 评论 -
课时43 图形学入门 - 实现漫反射 Diffuse shader 1
课时43 图形学入门 - 实现漫反射 Diffuse shader 1 1.Diffuse光照模型与向量计算2.Shader内建变量参数:见Built-in shader variables。光照变量参数取决于渲染路径(Rendering Path)和光照模型(LightMode)的标签(Pass Tag)。3.渲染路径可以在“PlayerSetting-Other S...原创 2019-09-23 23:17:43 · 337 阅读 · 0 评论 -
Unity5.6.3f1的UnityCG.cginc文件注释
编写Shader过程中需要用到的系统自带数据结构,宏定义,函数等大多定义在.cginc文件中,其中引用最多的要数UnityCG.cginc。鉴于它的重要性和注释不够,我在这里将常用部分做下注释,方便查阅。#ifndef UNITY_CG_INCLUDED#define UNITY_CG_INCLUDED#define UNITY_PI 3.14159265359f...原创 2019-09-24 09:27:00 · 911 阅读 · 0 评论 -
课时52 Fragment shader - 边缘泛光shader 1
课时52 Fragment shader - 边缘泛光shader 1 1.颜色的变换主要由法线N和视向量V有关。2.代码: Shader "Custom/Lesson52"{ //课时52 Fragment shader - 边缘泛光shader 1 Properties{ _Scale("Scale",Range(1,8)) = 2 } SubShader...原创 2019-09-24 22:18:49 · 274 阅读 · 0 评论 -
Shader语法易错知识点总结
1.结构体定义,后面要加分号;2.函数定义,后面不加分号;3.结构体和函数体内的表达式要加分号;4.CG代码段内的变量声明语句要加分号;5.属性Properties内的变量声明语句不加分号。6.属性Properties内的变量名字写错的话,代码不会报错,但①无法通过UI界面控制效果②CG代码段的变量值为默认值,比如颜色值默认为黑色。①转换法线到视空间:float3...原创 2019-09-20 13:43:44 · 344 阅读 · 0 评论