C#&unity 游戏开发自学
文章平均质量分 57
akuojustdoit
目标unity游戏开发全栈。做一只全能机
展开
-
Unity 文字过长末尾改成省略号
文字超过文本框的部分改成省略号原创 2022-11-10 10:41:35 · 1045 阅读 · 1 评论 -
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 · 2845 阅读 · 0 评论 -
学习笔记:C# Event 事件(一)
在类中,属性用来储存数据,方法用来进行逻辑运算,事件会使对象或者类具备通知能力的成员,用于对象或类间的动作协调和信息传递(消息推送)所以说,事件在类中,和类中其它成员的地位是一致的。而区别于委托,委托和类的地位是相同的,委托也是类,是数据类型。事件的功能 = 通知+可选事件参数(即详细信息)事件多用于桌面,手机等开发的客户端编程,因为这些程序经常是用户通知事件来驱动(比如点击按钮等,按钮本质就是用事件模型实现的)不同的语言实现事件模型的方法不同:C#用委托实现,Java用接口实现等等。。MVC,M原创 2021-05-06 22:13:15 · 489 阅读 · 2 评论 -
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 · 2431 阅读 · 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 · 1102 阅读 · 0 评论 -
学习笔记:Unity 使用Scriptable Object制作装备&技能&卡牌
介绍在你想制作一个技能的时候,一般情况下你需要有一个技能类,然后你需要实例化这个技能类,制作一个单例,填入不同的构造函数。而这个时候,就可以选择使用Scriptable Object,脚本化对象。Scriptable Object在unity中的图标样式:Scriptable Object简单来说就是个数据容器,它将实例化的对象都以脚本的方式存储在文件夹中。以我现在做的项目为例简单介绍Scriptable Object的使用:一,创建一个模板来定义每个对象包含的信息:注意:此技能类是需要继承原创 2021-03-30 11:25:02 · 1464 阅读 · 0 评论 -
学习笔记: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 · 2289 阅读 · 1 评论 -
踩坑笔记:Unity Hub更新后项目丢失
因为是自己进行项目的开发,一直是存在本地,没有在GitHub或者Gitee上储存项目。终于有一天还是发生了项目文件丢失的问题:状况还原:一个普通的中午,我打开了unity的package manager想去找一个插件,结果列表一直刷新不出来,报错显示我连接不上服务器,账号过期云云。以为是证书过期的问题,没太在意,打算重新激活一下证书。然后我将项目和unity hub全部关闭,结果重新打开unity hub的时候,发现电脑上的Demo一个不剩,全没了- -。于是我下载了一个数据恢复软件,尝试进行数据原创 2021-03-19 14:08:29 · 4113 阅读 · 8 评论 -
学习笔记:unity自带寻路(导航)系统:Nav Mesh导航网格
一,Nav Mesh 介绍unity官方文档:导航网格(即 Navigation Mesh,缩写为 NavMesh)是一种数据结构,用于描述游戏世界的可行走表面,并允许在游戏世界中寻找从一个可行走位置到另一个可行走位置的路径。该数据结构是从关卡几何体自动构建或烘焙的。我们可以这么理解:它是unity官方自带的一种寻路系统。我们可以通过它来制作简单的寻路,比如可以制作点击某个位置,让角色自动的绕开障碍走到目标点的效果,比如可以制作敌人AI,让它可以通过NavMesh绕开障碍追击我方单位。甚至可以在Na原创 2021-03-18 14:47:13 · 8780 阅读 · 0 评论 -
学习笔记:广度优先搜索算法BFS在unity中的实现(二)
书接上文: 学习笔记:广度优先搜索算法BFS在unity中的实现(一).先展示一下效果:代码整理自小Joe老师的视频: 广度优先搜索算法在Unity网格地图中实现最短路径.项目已上传至网盘:链接:https://pan.baidu.com/s/1QcO8CJRFyqb9-2FSIzWjfA提取码:shf9主要代码逻辑: #region //伪代码 //初始点加入到队列中 //while语句,判断队列是否为空 //判断队列第一个元素v是否是目标点 //如果是,则return,中止代原创 2021-03-15 02:22:11 · 498 阅读 · 0 评论 -
学习笔记: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 · 1312 阅读 · 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 · 966 阅读 · 0 评论 -
学习笔记: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 · 2459 阅读 · 2 评论 -
学习笔记:unity通过Mesh网格绘制图形:三角形&正方体&圆柱
一,介绍Mesh类:通过脚本创建或是获取网格的类,网格包含多个顶点和三角形数组。顶点信息包含坐标和所在面的法线。unity中3D的世界的所有图形全部都是由三角形构成的。比如unity已经装配好的几种图形我们可以看一下:我们可以在unity中通过Mesh类来绘制图形。所以在我们绘制其它图形之前,首先完成一个小目标,画一个三角形。二,绘制三角形首先做准备工作:1.在场景中创建一个空物体,并挂载MeshRenderer和MeshFilter组件。//我们先不考虑碰撞器的问题,所以不添加colli原创 2021-03-08 18:08:23 · 8819 阅读 · 3 评论 -
学习笔记:unity使用插件Post Processing处理后期效果入门(三)Bloom 辉光
Bloom 辉光主要用来模仿一些如霓虹灯,发光的武器,激光剑,车灯,夜晚窗户透出的灯光等等的特效。不开启辉光开启辉光,并将强度调整到20可以看出有很明显的柔光的效果在以前的韩国MMORPG中,经常就使用辉光的效果,让角色的装备有一种淡淡的发光的质感。在不开启辉光的情况下,在墙面增加了一个浅绿色的点光源。开启辉光并且将强度调到20这个效果就十分夸张了。看一下组件各个信息。BloomIntensity 强度,没什么好说的Threshold 阈值如果场景中物体的亮度超过这个阈值原创 2021-03-07 18:18:18 · 3794 阅读 · 7 评论 -
学习笔记:unity使用插件Post Processing处理后期效果入门(二)Auto Exposure 自动曝光
Auto Exposure 自动曝光理解自动曝光,首先要理解曝光。笔者理解的曝光是:光进入眼睛/镜头的过程,这个过程包含光的强度和光进入眼睛/镜头的时间。在摄影当中,通过控制光圈的大小来控制单位时间的入光量,通过按快门的时间来控制光进入的时间的长短。所以摄影中就有了三种情况:正常曝光曝光不足曝光过度看一下Auto Exposure组件官方文档有以下描述:自动曝光模仿人眼在不同黑暗程度下的调整方式。自动曝光效果根据图像包含的亮度级别范围来动态调整图像的曝光。这种调整会逐渐进行,因此可原创 2021-03-07 17:29:37 · 1474 阅读 · 1 评论 -
学习笔记:unity使用插件Post Processing处理后期效果入门(一)安装&Ambient Occlusion
介绍Post Processing插件是unity对场景进行后期处理的插件,可以在不使用代码的情况下模拟相机和电影的视觉效果的质感,从而大大的提升场景的视觉效果。安装Window–Package Manager–左侧列表上方切换到Unity Registry并搜索Post Processing–点击install安装...原创 2021-03-07 16:27:00 · 2591 阅读 · 0 评论 -
学习笔记: Unity Blend Tree动画混合树的使用入门
一,介绍在动画混合树Blend Tree原创 2021-03-04 18:10:20 · 5498 阅读 · 3 评论 -
学习笔记:C#刷题 leetcode 1052. 爱生气的书店老板_滑窗算法
题干:今天,书店老板有一家店打算试营业 customers.length 分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X 分钟不生气,但却只能使用一次。请你返回这一天营业下来,最多有多少客原创 2021-02-27 17:15:18 · 129 阅读 · 0 评论 -
学习笔记:unity背包系统入门&实现物品拖动(一)
背包系统我们知道,大致上就是很多个格子,最基础的功能是,我们可以把格子1的东西拖动到格子2中,这次来讲一下这个最基础的功能实现的原理。首先在场景中放入两个image,调成了红色和蓝色便于区分。我们要实现什么效果呢:按住方块,就可以拖动方块到任意位置。松手,方块的位置就不动了。首先做一点基础设置点击Canvas修改一下Canvas Scaler。点击镜头窗口,设置画面的比例和Canvas中设置成一致。这些设置,在本次示范中不是那么重要,但是在项目中,很重要!这些东西如果不统一设置,在对原创 2021-02-18 10:00:11 · 2297 阅读 · 2 评论 -
学习笔记:广度优先搜索算法BFS在unity中的实现(一)
广度优先搜索算法初看这个名字,一下子就被唬到了,这个词也太高端了吧?然后了解了一下它的概念,发现这个名字其实是很直白的,并非是一个很难懂的概念。广度优先搜索算法,别称:宽度优先搜索算法,英文全称:Breadth First Search,缩写BFS。什么是广度优先搜索算法是一种图形搜索算法,从根节点开始,沿着树的宽度遍历树的结点,如果所有结点均被访问,则算法终止。抛开概念通俗的讲现在假设你在一个漆黑的小房间,这个小房间四周都是封闭的,一共就有八个地砖的大小手机遗落在这个房间的某个地方(C)了,原创 2021-02-14 15:55:44 · 629 阅读 · 0 评论 -
学习笔记:unity中单例模式入门&菜鸟写法(一)
单例模式可以说最常见的一种设计模式了,也经常会出现在面试中特点:简单,但是包含线程安全,内存模型,类加载机制等知识点单例模式是什么,为什么需要单例模式?单例模式:顾名思义,就是在运行时一个类只有一个实例对象。有的类比较庞大和复杂,而且完全可以复用,这个时候就需要使用单例模式来避免重复的实例化对象来产生性能的浪费。而在游戏开发中,单例模式经常是用来写一些管理类,管理UI界面,音效等等更比如,人物从第一个场景到第二个场景,如何继承血量,装备等信息?(下一篇讨论)简单的代码演示,先演示继承mono原创 2021-02-14 04:53:01 · 1965 阅读 · 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 · 986 阅读 · 0 评论 -
学习笔记: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 · 262 阅读 · 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 · 296 阅读 · 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 · 259 阅读 · 0 评论 -
学习笔记:C#入门(四)循环练习--用for循环写三角形
循环练习–用for循环写三角形尝试了用嵌套的for循环写三角形。也是新手入门时最常见的题了。以前未接触过此类型的题,做的时候耗费了一段时间。画三角形建议可以将各个点的坐标打印出来,再看看自己需要打印的部分的坐标符合什么条件。第一个三角形 for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) {原创 2020-12-23 12:03:59 · 2517 阅读 · 0 评论 -
学习笔记: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 · 174 阅读 · 0 评论 -
学习笔记:浅谈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 · 316 阅读 · 0 评论 -
学习笔记: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 · 463 阅读 · 0 评论 -
学习笔记: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 · 258 阅读 · 0 评论 -
学习笔记:C#入门(三)值类型&引用类型
C# 语言的数据类型分为值类型和引用类型。引用类型包括类、接口、数组、委托、字符串等。值类型(Value types):值类型包括结构体和枚举类型。结构体包括整数、小数,布尔值等。值类型的默认值一般为 0,例如整数和小数的默认值都是 0,枚举类型的默认值也为 0, char 的默认值为 ‘\0’。值类型的内存分配三种情况:值类型作为局部变量。普通的值类型总是分配在栈上。例如以最简单的 int 为例,int a=1 意味着我们在栈上开辟了一块空间存储这个值类型。using System;n原创 2020-11-03 18:41:51 · 232 阅读 · 0 评论 -
学习笔记:C#入门(二)注释
注释比较简单,快速过一下第一种注释方式用“//”注释,注释单行// 这是单行注释第二种注释方式“/* 这是多行的注释*/”,将需要注释的内容包起来/*这是多行的注释*/第三种注释方式代码块上面的三斜杠注释,在方法上打三个斜杠自动生成 /// <summary> /// /// </summary> /// <param name="amount"></param> public void Damage(float amount)原创 2020-11-02 15:54:04 · 1851 阅读 · 0 评论 -
学习笔记:C#入门(一)C#程序的基本结构
开一个新系列,按照自学的顺序,补全之前缺少的笔记,旨在巩固学习今天来写一下C#最基础的东西,主要参考于【菜鸟教程】,也会写一些自己的理解。C#程序的基本结构1.上代码using System;namespace HelloWorldApplication{ class HelloWorld { //hello world static void Main(string[] args) { Console.WriteLine("Hello World"); Console.原创 2020-10-29 23:01:02 · 1030 阅读 · 0 评论 -
学习笔记:unity脚本生命周期
在unity脚本中,这几个函数的调用顺序(1)Awake() 脚本实例化时调用,无论此脚本是不是active的 (调用一次)(2)OnEnable() 是在游戏对象可以调用时调用(3)Start() 脚本enable时调用 (调用一次)(4)FixedUpdate() 每次调用间隔时间一致(5)Update()每帧执行一次,间隔时间不固定(6)LateUpdate() 每帧Update调用之后(7)OnGUI() 绘制GUI时调用(8)OnDisable() 当对象设置为不可用时(9)On原创 2020-10-27 12:14:25 · 268 阅读 · 0 评论 -
踩坑笔记:unity hub上没有添加模块选项
问题:在unity hub中,想为某版本的unity添加模块,但是却没有【添加模块】的选项。原因:我的情况是,买了新的电脑,在电脑上先下载了unity3d,后下载了unity hub,在unity hub中选择手动添加已安装版本的unity,之后就出现了没有【添加模块】的问题。处理方法:我用了最粗暴的方法,就是先彻底删除unity,然后再在hub中重新安装一个unity。虽然流程很简单,但是中间还是有一点坑,踩到了还会浪费一些时间。1.删除unity第一步,首先把软件卸载了,根目录中用Uni原创 2020-10-26 12:38:15 · 13427 阅读 · 5 评论 -
学习笔记:在unity中理解C#委托(二)
今天继续来学习委托一,委托好在哪里因为委托是一种引用类型,所以我们可以把委托当作方法的参数,传递到方法里面去,使用了这个传进来的委托间接的去调用了我们委托所封装的某个方法,这样就形成了一种动态调用方法的代码。二,委托的缺点1.多播委托容易人为失误,导致封装的所以方法重置。(多播委托:一个委托实例里封装了多个方法,方法重置:误把+=写成=,导致给委托实例添加方法的时候,后面的方法把前面的方法覆盖了)private void OnEnable(){ mydelegate01 = Blink; m原创 2020-10-23 12:14:42 · 259 阅读 · 0 评论 -
学习笔记:在unity中理解C#委托(一)
一,什么是委托1.概念一个委托(delegate)是一种类(Class),可以指向一个或多个方法。是一种引用类型的数据类型。当你实例化委托后,这个实例,可以存储其他类型兼容的方法的引用。你可以通过委托类型的实例,间接调用这些方法。2.通俗的说委托是一种数据类型,这个类型的数据可以保存多个方法的。二,在unity中示范一下首先,我在unity中放了个小狐狸素材。然后为小狐狸创建了一个C#脚本,包含三个方法。// An highlighted blockvar foo = 'bar';原创 2020-10-22 09:26:29 · 811 阅读 · 0 评论