- 博客(46)
- 收藏
- 关注
原创 Unity Dotween 缓动函数&自定义缓动函数
DoTween自带的缓动函数示例: DOTween.To(() => Slider.value, x => Slider.value = x, 1, 1).SetEase(Ease.Linear).OnComplete( () =>{ } );自定义缓动函数public AnimationCurve ancu;DOTween.To(() => Slider.value, x => Sli
2022-05-20 10:39:32 2884
原创 学习笔记:C# Event 事件(一)
在类中,属性用来储存数据,方法用来进行逻辑运算,事件会使对象或者类具备通知能力的成员,用于对象或类间的动作协调和信息传递(消息推送)所以说,事件在类中,和类中其它成员的地位是一致的。而区别于委托,委托和类的地位是相同的,委托也是类,是数据类型。事件的功能 = 通知+可选事件参数(即详细信息)事件多用于桌面,手机等开发的客户端编程,因为这些程序经常是用户通知事件来驱动(比如点击按钮等,按钮本质就是用事件模型实现的)不同的语言实现事件模型的方法不同:C#用委托实现,Java用接口实现等等。。MVC,M
2021-05-06 22:13:15 491 2
原创 学习笔记:GAMES101图形学入门闫令琪(六)深度缓存&着色(漫反射)
光栅化补充部分在前几章讨论过,将场景的中的坐标,压缩到一个小方块中,然后进行光栅化,当时跳过了一个环节,就是区分物体的前后(Z轴坐标)的关系,这一章来解决这个问题。画家算法先把远处的东西画完,再画近处的东西,就会把应该覆盖的东西覆盖掉。在某些情况下是可行的,但是在下图的情况就无法判断三个三角形的深度关系:Z-Buffer 深度缓存虽然我没有办法排每一个三角形的深度顺序,但是我可以排每一个像素的深度。可以在像素内保存像素所在的几何最浅的深度,离我们最近的距离。渲染最后的成品图像的同时,会生成另外
2021-04-22 05:46:08 325
原创 学习笔记:GAMES101图形学入门闫令琪(五)抗锯齿
这节课听的一脸懵逼 总之先随便记记吧= =继续昨天的锯齿/走样来说三种常见的采样导致的问题:锯齿摩尔纹(手机拍电视)车轮倒转(高速看车轮转动感觉像是逆时针转)本质都是因为信号变化过快,以至于采样速度跟不上如何做反走样:在采样之前,对原始的函数/信号做一个模糊/滤波这边课程开始讲起了傅里叶变换大致解释了这两个问题:为什么采样不足会导致锯齿?为什么先模糊后采样能够抗锯齿,而先采样后模糊不行?下图中黑色点为采样点,在频率越来越大的时候,就越无法根据采样点来还原原本的函数同样的
2021-04-22 04:06:23 480
原创 学习笔记:GAMES101图形学入门闫令琪(四)光栅化
屏幕:一个二维数组数组中每一个元素是个像素一种典型的光栅成像设备光栅化:把东西画在屏幕上的过程像素now 像素是一个颜色均匀的小正方形颜色由RGB表示屏幕空间:屏幕上建立一个坐标系像素中心的位置实际是:在上一章节,图形已经被压缩到(-1,1)这个范围内了,现在需要继续将它映射到屏幕上先不管Z,先缩放再平移-1到1长度是2,所以先除以2,然后分别乘上width和height,最后将中心点(0,0)平移到(width/2,height/2)光栅化的过程首先介绍一下三角形.
2021-04-21 02:58:03 366
原创 学习笔记:GAMES101图形学入门闫令琪(三)视图变换
三维下向量绕某一轴旋转通过绕着三个轴的旋转的组合,可以描述复杂的旋转罗德里格斯公式,描述朝向考虑到旋转矩阵不太适合做差值运算(表示25度的旋转和15度的旋转取平均值并不是20度的旋转矩阵),这方面可以使用四元数去进行差值运算视图变换将三维空间坐标系内的点映射到相机坐标系中首先操作相机的位置,方向,让其它物体跟着变换就行首先将相机放置在坐标系的原点,朝向-Z的方向即,先做平移再做旋转平移很好做,一个Tview解决旋转的时候要从反方向思考,就是可以简单计算出从-Z朝向转换到相机朝向.
2021-04-20 00:07:43 301
原创 学习笔记:GAMES101图形学入门闫令琪(二)矩阵变换&齐次坐标
还是相对简单,快速过放一点简单的变换,混个眼熟矩阵变换缩放矩阵沿Y轴反转将上边向右扯的效果逆时针旋转角度推导过程:特殊的点带入公式如果一个矩阵乘以输入坐标,能找到唯一输出坐标,这种矩阵的变换叫做线性变换齐次坐标这是一个平移变换,即非线性变换,写起来相对麻烦,但是很常见:这种写法相对麻烦。于是引入了齐次坐标的概念(写法):在矩阵变换中,旋转默认是以原点为中心旋转,逆时针旋转。将一个向量进行线性变换时,将变换的矩阵从右到左依次进行计算上图为先逆时针转45度再沿X轴
2021-04-19 01:46:18 419
原创 学习笔记:GAMES101图形学入门闫令琪(一)向量点乘&叉乘&矩阵
前几节课相对简单一些,快速过一下。课程链接: GAMES101-现代计算机图形学入门-闫令琪向量点乘向量的点乘会得到一个数。向量点乘符合交换律,结合律,分配律。点乘经常用在:计算两向量的夹角计算一个向量在另一个向量上的投影通过夹角大小,判断两向量朝向的相似度(方向相近/相反/垂直等)向量叉乘向量的叉乘会得到一个新的向量该向量垂直于ab所在平面,符合右手螺旋定则,四根手指从a到b,a×b和大拇指同向则,向量叉乘不符合交换律(b×a方向朝下),符合结合律,分配律。叉乘经常
2021-04-19 01:13:41 819
原创 Unity 按住并移动鼠标实现拖拽镜头的效果
达成效果:镜头的是45度的俯视角镜头:using UnityEngine;using UnityEngine.EventSystems;public class Move_Scal : MonoBehaviour, IDragHandler{ public float dragSpeed; private Vector3 p1; private Vector3 camera_right; private Vector3 camera_up; private Vector3 came
2021-04-11 04:51:57 2449 1
原创 学习笔记:Unity热更新(一)AssetBundle介绍&生成AB包文件
AssetBundle是什么AssetBundle简称AB包,可以理解为压缩包。里面包含了多个文件。不同的平台(ios 安卓 windows等等)有不同的资产压缩包。压缩包中包含模型贴图预制体音效材质球等等。(不能将C#代码打包进去,这也是热更新用lua来做的原因)这些文件可以分为两类:serialized file 和 resource files(序列化文件和源文件)。serialized file:资源被打碎放在一个对象中,最后统一被写进一个单独的文件(只有一个);resource files
2021-04-01 18:57:30 1107
原创 学习笔记:Unity 使用Scriptable Object制作装备&技能&卡牌
介绍在你想制作一个技能的时候,一般情况下你需要有一个技能类,然后你需要实例化这个技能类,制作一个单例,填入不同的构造函数。而这个时候,就可以选择使用Scriptable Object,脚本化对象。Scriptable Object在unity中的图标样式:Scriptable Object简单来说就是个数据容器,它将实例化的对象都以脚本的方式存储在文件夹中。以我现在做的项目为例简单介绍Scriptable Object的使用:一,创建一个模板来定义每个对象包含的信息:注意:此技能类是需要继承
2021-03-30 11:25:02 1474
原创 学习笔记:unity SharedMaterial&Material的不同以及MaterialPropertyBlock的使用
Material在运行的时候,改变material属性,unity会new一份新的material,在运行结束后会将新生成的material全部删除,并且不会改变本地工程中的材质material在场景中创建了许多的cube,挂上了同一个材质,并且挂上了同一个脚本:using UnityEngine;public class NewBehaviourScript : MonoBehaviour{ private void Start() { changeColor();
2021-03-25 22:10:29 2302 1
原创 踩坑笔记:Unity Hub更新后项目丢失
因为是自己进行项目的开发,一直是存在本地,没有在GitHub或者Gitee上储存项目。终于有一天还是发生了项目文件丢失的问题:状况还原:一个普通的中午,我打开了unity的package manager想去找一个插件,结果列表一直刷新不出来,报错显示我连接不上服务器,账号过期云云。以为是证书过期的问题,没太在意,打算重新激活一下证书。然后我将项目和unity hub全部关闭,结果重新打开unity hub的时候,发现电脑上的Demo一个不剩,全没了- -。于是我下载了一个数据恢复软件,尝试进行数据
2021-03-19 14:08:29 4200 8
原创 学习笔记:unity自带寻路(导航)系统:Nav Mesh导航网格
一,Nav Mesh 介绍unity官方文档:导航网格(即 Navigation Mesh,缩写为 NavMesh)是一种数据结构,用于描述游戏世界的可行走表面,并允许在游戏世界中寻找从一个可行走位置到另一个可行走位置的路径。该数据结构是从关卡几何体自动构建或烘焙的。我们可以这么理解:它是unity官方自带的一种寻路系统。我们可以通过它来制作简单的寻路,比如可以制作点击某个位置,让角色自动的绕开障碍走到目标点的效果,比如可以制作敌人AI,让它可以通过NavMesh绕开障碍追击我方单位。甚至可以在Na
2021-03-18 14:47:13 8853
原创 学习笔记:广度优先搜索算法BFS在unity中的实现(二)
书接上文: 学习笔记:广度优先搜索算法BFS在unity中的实现(一).先展示一下效果:代码整理自小Joe老师的视频: 广度优先搜索算法在Unity网格地图中实现最短路径.项目已上传至网盘:链接:https://pan.baidu.com/s/1QcO8CJRFyqb9-2FSIzWjfA提取码:shf9主要代码逻辑: #region //伪代码 //初始点加入到队列中 //while语句,判断队列是否为空 //判断队列第一个元素v是否是目标点 //如果是,则return,中止代
2021-03-15 02:22:11 507
原创 学习笔记:unity使用插件Post Processing处理后期效果入门(五)Depth Of Field景深
Depth Of Field 景深可以用来虚化场景的某处(比如背景),更加突出某个位置的展现。Focus Distance 焦点距离将Focus Distance设置为5则和摄像机距离为5的单位最清晰Aperture 光圈设置光圈大小Aperture 越小,模糊区越模糊Focal length 焦距Focal length = 1的时候,全场都是清晰的Focal length = 300的时候全景都是糊的,取了150左右效果还可以笔者不懂摄影,感觉在使用的时候慢慢调节,找出想
2021-03-15 01:36:14 1321 4
原创 学习笔记:unity使用插件Post Processing处理后期效果入门(四)Vignette&Chromatic Aberration
Vignette 边角压暗Mode-Classic模式下Center设置中心点位置:即(0,0)到(1,1)左下角到右上角color设置颜色,没什么好说的Intensity值越高,压暗的区域越大Smothness值越高,颜色过渡的区域越大例:Smothness = 0.01Smothness = 0.7Roundness取值范围(0,1),值越大,明亮部分的形状越像一个圆例:Roundness = 0.7Rounded勾选之后,明亮区形状变成标准的正方形或是圆形
2021-03-15 00:53:01 979
原创 学习笔记:Lua语法入门(一)基本语法&数据类型
一,基本语法&数据类型1.hello worldprint("Hello World!")2.注释–注释–[[多行注释]]3.标识符用于定义一个变量,函数获取其他用户定义的项字母或是下划线开头4.关键字一共就这么多andbreakdoelseelseifendfalseforfunctionifinlocalnilnotorrepeatreturnthentrueuntilwhilegoto
2021-03-12 14:55:22 169
原创 学习笔记:unity通过Mesh网格绘制图形:球体
接着上一篇文章说:球体public class 球体 : MonoBehaviour{ MeshRenderer meshRenderer; MeshFilter meshFilter; List<Vector3> verts; List<int> indices; int N = 10; void Start() { verts = new List<Vector3>();
2021-03-09 18:15:23 2478 2
原创 学习笔记:unity通过Mesh网格绘制图形:三角形&正方体&圆柱
一,介绍Mesh类:通过脚本创建或是获取网格的类,网格包含多个顶点和三角形数组。顶点信息包含坐标和所在面的法线。unity中3D的世界的所有图形全部都是由三角形构成的。比如unity已经装配好的几种图形我们可以看一下:我们可以在unity中通过Mesh类来绘制图形。所以在我们绘制其它图形之前,首先完成一个小目标,画一个三角形。二,绘制三角形首先做准备工作:1.在场景中创建一个空物体,并挂载MeshRenderer和MeshFilter组件。//我们先不考虑碰撞器的问题,所以不添加colli
2021-03-08 18:08:23 8882 3
原创 学习笔记:unity使用插件Post Processing处理后期效果入门(三)Bloom 辉光
Bloom 辉光主要用来模仿一些如霓虹灯,发光的武器,激光剑,车灯,夜晚窗户透出的灯光等等的特效。不开启辉光开启辉光,并将强度调整到20可以看出有很明显的柔光的效果在以前的韩国MMORPG中,经常就使用辉光的效果,让角色的装备有一种淡淡的发光的质感。在不开启辉光的情况下,在墙面增加了一个浅绿色的点光源。开启辉光并且将强度调到20这个效果就十分夸张了。看一下组件各个信息。BloomIntensity 强度,没什么好说的Threshold 阈值如果场景中物体的亮度超过这个阈值
2021-03-07 18:18:18 3819 7
原创 学习笔记:unity使用插件Post Processing处理后期效果入门(二)Auto Exposure 自动曝光
Auto Exposure 自动曝光理解自动曝光,首先要理解曝光。笔者理解的曝光是:光进入眼睛/镜头的过程,这个过程包含光的强度和光进入眼睛/镜头的时间。在摄影当中,通过控制光圈的大小来控制单位时间的入光量,通过按快门的时间来控制光进入的时间的长短。所以摄影中就有了三种情况:正常曝光曝光不足曝光过度看一下Auto Exposure组件官方文档有以下描述:自动曝光模仿人眼在不同黑暗程度下的调整方式。自动曝光效果根据图像包含的亮度级别范围来动态调整图像的曝光。这种调整会逐渐进行,因此可
2021-03-07 17:29:37 1485 1
原创 学习笔记:unity使用插件Post Processing处理后期效果入门(一)安装&Ambient Occlusion
介绍Post Processing插件是unity对场景进行后期处理的插件,可以在不使用代码的情况下模拟相机和电影的视觉效果的质感,从而大大的提升场景的视觉效果。安装Window–Package Manager–左侧列表上方切换到Unity Registry并搜索Post Processing–点击install安装...
2021-03-07 16:27:00 2610
原创 学习笔记:C#刷题 leetcode 1052. 爱生气的书店老板_滑窗算法
题干:今天,书店老板有一家店打算试营业 customers.length 分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X 分钟不生气,但却只能使用一次。请你返回这一天营业下来,最多有多少客
2021-02-27 17:15:18 132
原创 学习笔记:unity背包系统入门&实现物品拖动(一)
背包系统我们知道,大致上就是很多个格子,最基础的功能是,我们可以把格子1的东西拖动到格子2中,这次来讲一下这个最基础的功能实现的原理。首先在场景中放入两个image,调成了红色和蓝色便于区分。我们要实现什么效果呢:按住方块,就可以拖动方块到任意位置。松手,方块的位置就不动了。首先做一点基础设置点击Canvas修改一下Canvas Scaler。点击镜头窗口,设置画面的比例和Canvas中设置成一致。这些设置,在本次示范中不是那么重要,但是在项目中,很重要!这些东西如果不统一设置,在对
2021-02-18 10:00:11 2312 2
原创 学习笔记:广度优先搜索算法BFS在unity中的实现(一)
广度优先搜索算法初看这个名字,一下子就被唬到了,这个词也太高端了吧?然后了解了一下它的概念,发现这个名字其实是很直白的,并非是一个很难懂的概念。广度优先搜索算法,别称:宽度优先搜索算法,英文全称:Breadth First Search,缩写BFS。什么是广度优先搜索算法是一种图形搜索算法,从根节点开始,沿着树的宽度遍历树的结点,如果所有结点均被访问,则算法终止。抛开概念通俗的讲现在假设你在一个漆黑的小房间,这个小房间四周都是封闭的,一共就有八个地砖的大小手机遗落在这个房间的某个地方(C)了,
2021-02-14 15:55:44 638
原创 学习笔记:unity中单例模式入门&菜鸟写法(一)
单例模式可以说最常见的一种设计模式了,也经常会出现在面试中特点:简单,但是包含线程安全,内存模型,类加载机制等知识点单例模式是什么,为什么需要单例模式?单例模式:顾名思义,就是在运行时一个类只有一个实例对象。有的类比较庞大和复杂,而且完全可以复用,这个时候就需要使用单例模式来避免重复的实例化对象来产生性能的浪费。而在游戏开发中,单例模式经常是用来写一些管理类,管理UI界面,音效等等更比如,人物从第一个场景到第二个场景,如何继承血量,装备等信息?(下一篇讨论)简单的代码演示,先演示继承mono
2021-02-14 04:53:01 1998 1
原创 学习笔记:unity中Invoke&协程Coroutine用法入门&延时执行某段代码
直接上例子:创建一个cube,挂载CubeController脚本CubeController代码:public class CubeController : MonoBehaviour{ void Update() { if (Input.GetMouseButtonDown(0)) { Debug.Log("time:" + Time.time); changeColor(); }
2021-01-23 18:19:23 991
原创 学习笔记:C#入门(六)继承&多态:方法重写override virtual&abstract虚方法和抽象方法
首先来一段代码,看一下继承的关系 class Monster { public void BeHit() { Console.WriteLine("基类Behit"); } } class Slam : Monster { public void BeHit() { Console.WriteLine("打史莱姆"); }
2020-12-29 12:39:23 264 1
原创 学习笔记:递归&记忆化搜索优化斐波那契数列
首先我们知道,斐波那契数列是前两项为1,第三项之后是前两项数字的和的数列1,1,2,3,5,8,13,21…代码写了一个方法fib,参数a是数列最后一个数字的索引,参数num是计数器,看看执行后方法共执行了几次。返回值是数列最后一个数字。namespace 斐波那契数列20201224{ class Program { static void Main(string[] args) { int
2020-12-24 17:39:45 297 1
原创 学习笔记:C#入门(五)多态:方法重载 overload
首先举个例子方法1 public int add(int a, int b) { return a + b; }这是个求和的方法参数是两个int型,返回值是int型,就是计算了整数a+整数b那么我现在想计算两个小数的和方法2 public double add1(double a, double b) { return a + b; }这时候就需要重新写
2020-12-23 13:01:39 261
原创 学习笔记:C#入门(四)循环练习--用for循环写三角形
循环练习–用for循环写三角形尝试了用嵌套的for循环写三角形。也是新手入门时最常见的题了。以前未接触过此类型的题,做的时候耗费了一段时间。画三角形建议可以将各个点的坐标打印出来,再看看自己需要打印的部分的坐标符合什么条件。第一个三角形 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) {
2020-12-23 12:03:59 2522
原创 程序员升职记 全关卡攻略&通俗思路 Human Resource Machine
程序员升职记 Human Resource Machine1– HUMAN RESOURCE MACHINE PROGRAM –INBOXOUTBOXINBOXOUTBOXINBOXOUTBOX2– HUMAN RESOURCE MACHINE PROGRAM –a:INBOXOUTBOXJUMP a3– HUMAN RESOURCE MACHINE PROGRAM –COPYFROM 4OUTBOXCOPYFROM 0OUTBOXCOPYFROM 3OU
2020-12-22 18:35:46 29062 25
原创 学习笔记:C#刷题 leetcode 1389. 按既定顺序创建目标数组 用list和不用list的做法
题干给你两个整数数组 nums 和 index。你需要按照以下规则创建目标数组:1.目标数组 target 最初为空。2.按从左到右的顺序依次读取 nums[i] 和 index[i],在 target 数组中的下标 index[i] 处插入值 nums[i] 。3.重复上一步,直到在 nums 和 index 中都没有要读取的元素。请你返回目标数组。题目保证数字插入位置总是存在。例输入:nums = [0,1,2,3,4], index = [0,1,2,2,1]输出:[0,4,1,3,
2020-11-17 07:29:19 177
原创 学习笔记:浅谈C#装箱和拆箱
装箱和拆箱是什么装箱:将数据由值类型转换为引用类型拆箱:将已经装箱的数据由引用类型转换回原本的值类型举例:int n = 10;object o = n;//装箱这里就做了装箱的操作,n的10是int类型的,o的10是object类型的原本只有在栈上一块空间n存放了10。现在又在堆中开辟了一块空间存放了10(还有同步块索引和方法表指针),在栈中存放了指向此堆中地址的引用。int n = 10;object o = n;//装箱int n2 = (int)o;//拆箱拆箱操作,复制
2020-11-13 11:12:34 320
原创 学习笔记:C#刷题 leetcode 455.分发饼干【贪心算法】
先上题干public class Solution { public int FindContentChildren(int[] g, int[] s) { Array.Sort(g); Array.Sort(s); int m = 1; int n = 1; while(m<=g.Length&&n<=s.Length) { if(g[g.Le
2020-11-12 19:19:53 472
原创 学习笔记:C#刷题 leetcode 20.有效的括号 不用栈&用栈 做法
今天在leetcode刷了一道题,也学习一下栈的用法。给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。首先做了一个不用栈的方法public class Solution { public bool IsValid(string s) { if (s.Length % 2 == 1 || s.Le
2020-11-10 01:33:12 261
原创 学习笔记:C#入门(三)值类型&引用类型
C# 语言的数据类型分为值类型和引用类型。引用类型包括类、接口、数组、委托、字符串等。值类型(Value types):值类型包括结构体和枚举类型。结构体包括整数、小数,布尔值等。值类型的默认值一般为 0,例如整数和小数的默认值都是 0,枚举类型的默认值也为 0, char 的默认值为 ‘\0’。值类型的内存分配三种情况:值类型作为局部变量。普通的值类型总是分配在栈上。例如以最简单的 int 为例,int a=1 意味着我们在栈上开辟了一块空间存储这个值类型。using System;n
2020-11-03 18:41:51 235
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人