自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 二分查找体会

C#版本(最基础版二分查找),时间复杂度为O(logn),找不到返回-1这种查找只会有两种情况:1.元素刚好出现在二分法的中心(此时返回的是mid)2.循环到只剩最后两个元素,在进行最后一次二分法(此时返回的是low)。由此可得,这种写法的二分法被找到元素的位置一定出现在low或mid位置。另:使用(height-low)/2+low代替(height+low)/2是防止数组越界 public int search(int[] nums, int target) {

2021-09-18 10:26:16 177

原创 C# 冒泡排序及其拓展

一、最基本的冒泡排序我们之前接触的冒泡排序都是只能对int类型进行排序bool swapped =true;do{ swapped=false; for(int i=0;i<sortArray.Length-1;i++){ if(sortArray[i]>sortArray[i+1]){ int temp=sortArray[i]; sortArray[i]=soryArray[i+1]; sortArray[i+1]=temp;

2021-07-08 10:48:44 209

原创 Unity UI 文字背景自适应

(用于背景图片原始尺寸就过大的情况)层级关系1.PyImage上增加ContentSizeFitter组件(根据横向还是纵向扩展将对应的参数改为 MinSize),并且将锚点修改为(0,1),增加(纵向扩展)Vertical LayoutGroup组件,同时将imageType修改为Sliced格式2.在文本组件中添加 Layout Element 组件,并调节最小高度(Min Height)为你需要的高度即可...

2021-07-06 16:48:29 850 1

原创 TypeScript入门(一)

一、类型注解轻量级的约束方式,为函数或变量添加约束。限制类型function typean(para:string){ return para;}//这个时候表示typean函数接受的参数必须是字符串类型的,其他类型则会报错二、接口实现接口的时候,不需要明确地使用 implements,只要保证包含了接口要求的结构即可interface Person { firstName: string; lastName: string;}function .

2021-06-30 10:59:13 251

原创 Unity UI基础

一、Rect Transform基本参数Anchors代表了这个物体的锚点相对于父物体的对齐方式(锚点在左上角时,代表物体针对父物体的左上角对齐,移动左上角的时候,子物体会跟随父物体移动) (锚点默认以父物体的左下角为(0.0)点,锚点在父物体的几何中心时,对应的参数就为min(0.5,0.5 ) max(0.5,0.5))Min可以理解为做部分锚点的坐标(同理可知,max就是另一部分,不做赘述)PivotPivot表示这个物体的中心点的位置,(0,0)代...

2021-06-25 15:04:36 1124

原创 C#委托和多播委托

一、概念 我们需要把方法当作参数传递的时候就会用到委托。简而言之,委托是一个类型,这个类型可以赋值一个方法的引用二、委托的声明及使用委托声明delegate void IntMethodInvoke(int x); //定义了一个名为IntMethodInvoke的委托,这个委托指向带有一个int类型参数的方法,并且返回值是void委托例子使用委托类型调用方法class Program{ private delegate string GetAString().

2021-05-21 12:02:58 178

原创 Unity数据持久化——LitJson、JsonUtility

LitJson是第三方插件JsonUtility是Untiy自带的一、JsonUtility创建Jsonusing System.Collections;using System.Collections.Generic;using UnityEngine;//先导入System命名空间才有Serializable关键字using System;//使用JsonUtility必须要在转成Json数据的类上加关键字[Serializable]public class Person

2021-05-18 16:15:46 382

转载 Unity的序列化和反序列化——XML和JSON

一、序列化、反序列化什么是序列化、反序列化?序列化就是把数据对象转换成二进制流保存为本地文件的过程。 反序列化就是把储存有数据信息的二进制文件还原成数据对象的过程。序列化的意义以某种储存形式(二进制/XML,今天只讲二进制方法)使自定义对象持久化 方便将对象从一个地方移动到另一个地方(转移文件再反序列化读取) 使游戏数据不容易被直接篡改二、XML和JSONXML扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标

2021-05-18 11:39:11 407

原创 Unity TimeLine基础

TimeLine 可以用作过场动画电影效果TimeLine的创建和动画创建过程类似(已经设置好的TimeLine ,右键轨道选择CuvertToClipTrack就可以将已经设置好的轨道转化为一个整体)一、Extrapolation设置需要了解Animation Extrapolation设置Pre-Extrapolate:动画播放前物体的状态None:动画播放前使物体保持在(0,0,0)点Hold:动画播放前物体保持在动画开始的位置Loop:动画一直循环播放,不管动画是否设置

2021-05-11 18:00:17 209

原创 Unity射线检测

射线与具有碰撞器的模型发生了碰撞,将停止发射。可以用来实现子弹是否击中目标的检测,鼠标点击物体等。常用方法射线检测有4个不同参数的方法:1.public static bool Raycast (Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance, int layerMask, QueryTriggerInteraction queryTriggerInteraction);/*根据参数顺序,参

2021-05-10 16:34:51 290

原创 Unity控制相机跟随

如何控制相机始终跟随在角色后方(角色转向相机也转向) private Transform Player; private Vector3 offset; //相机和游戏物体偏移量 private float smoothing=3; 平滑值 void Start() { Player=GameObject.FindGameObjectWithTag("Player").transform; //找到游戏物体 o

2021-05-10 10:50:03 149

原创 Unity粒子系统实战

细节处理:1.粒子系统在观察的时候每个粒子都会有一个橙黄色的外框在Gizmos中可以取消外框2.有多个粒子系统时,想要创建一个父物体来管理时,不能创建空物体来作为其的父物体(这样会导致旗下的所有粒子系统都不可见),而是需要创建一个粒子系统,将其所有参数取消勾选作为父物体即可。3.推荐几个个Shader使用 Legacy->Particle->Additive(效果是更加明亮一些)Partocles/Standard Surface 使外表更加明亮一些一、火花场景粒子系统的Ren

2021-05-08 18:21:26 735

原创 Unity动画系统

一、创建动画1.选中要添加动画的游戏对象2.Window—>Animation->Animation会生成两个文件一个是.anim文件即动画文件.controller动画控制器文件(选中状态机 ,点击Window->Animation->Animator,即可进入状态机编辑,如下图)二、认识Animation编辑面板三、使用动画控制物体移动1.在Animation编辑界面中点击Add Property2.选择Position3.添加需要修改的数据(图中

2021-04-30 18:24:10 2103 2

原创 UnityUI——使用Sprite Editor

1.首先选择Texture Type为 Sprite(2DandUI)2.在Sprite Mode中选择Multiple(Sprite Mode中共有三个参数Single 单一模式,将Sprite用做一张单独的图片 Multiple多重模式,在此模式下可以对图片进行裁剪,分割为多个图片Polygon多边形模式 )3.点击Sprite Editor按钮,弹出Sprite Editor试图4.在视图中选择好框好需要提取的图像,点击左上角Trim,就会对齐所选物体5.点击Apply即可切割图.

2021-04-29 16:12:02 1706

原创 Unity Shader(一)渲染流水线

一、基本知识渲染流水线用来生成或者渲染一张二维纹理,即我们在电脑上看到的所有效果。它的输入是一个虚拟摄像机、一些光源、一些Shader以及纹理1.什么是渲染流水线?由一个三位场景出发,生成(或者说渲染)一张二维图像(即计算机从一系列的顶点数据、纹理等信息出发,把这些信息转换成一张图片)。这个工作由CPU和GPU共同完成渲染流程可以分为三个阶段应用阶段-几何阶段-光栅化阶段(一)、应用阶段通常由CPU负责,开发者具有这个阶段的绝对控制权。这一阶段中,开发者主要有三个任务:1.准备好场景

2021-04-28 18:25:34 157

原创 Unity基础与AssetBundle

一、基础(一)、资源导入Unity导入资源时:1.Unity为资源分配唯一ID2.创建.meta文件3.对资源进行处理.meta文件中包含了资源的唯一ID,且与资源文件在同一文件夹下。如果在unity的窗口之外移动或命名资源,但没更新.meta文件,则对该资源的任何引用都会中断,并且生成新的.meta文件(二)、Editor文件夹不管在哪里出现当Unity 编辑的时候都会运行这个文件夹下的内容(也不管有几个)该文件夹下的代码要加 using UnityEditor;二、AssetBun

2021-04-28 18:24:00 161

原创 Unity DoTween插件

一、常用方法1.gameobject.DOMove(new vector3(x,y,z),3)在3秒内gameobject移动到(x,y,z)的位置(世界坐标)2.gameobject.DOLocalMove(new vector3(x,y,z),3)在3秒内gameobject移动到(x,y,z)的位置(本地坐标)3 .gameobject.DOMovex(5,1)一秒内移动到x=5的位置(只移动x轴),yz轴同理4 .gameobject.DOPlayBackwards();动画倒放5.g

2021-04-27 18:29:46 259

原创 Unity粒子系统基本

一、基本属性(一)、Particle System(以下的粒子大小指的是单个粒子的大小,而transform组件中的Scale组件影响的是整个粒子系统的范围(即Shape的大小),可能会间接影响到粒子大小)参数名意义Duration粒子系统持续的时间Lopping是否循环Prewarm是否预热(如果勾选上了,表示一开始粒子就将充满图片,如果没勾上则粒子一点点出现)StartDelay粒子系统延迟开始的时间StartLifttime每个粒子的生命时

2021-04-26 18:03:07 3425

原创 Unity2D UI——RawImage和Image

一、Image的属性1.Source Image:只支持Sprite类型的图片2.color:给图片上颜色3.Material:放入材质4.Raycast Target:是否启动射线检测5.Maskable:6.Image Type:图片类型Simple:普通Sliced:九宫格切片(按照九宫格处理拉伸)Tiled:平铺(图片本身大小保持不变,像地砖一样铺满整个Image)Filled:填充(例如:血条、蓝条)7.Preserve Aspect:是否保持宽高比二、Raw Imag

2021-04-26 14:16:00 603

原创 Unity2D UI拼接——Layout布局组件

Grid Layout Group组件的使用一、添加在需要布局的所有物体的父级上二、参数的意义(一)、Padding控制了第一个物体在父级物体中的位置(二)、Cell Size表示每一个物体的大小(三)、Spacing代表每一个物体之间的间距(四)、Start Corner:Corner枚举类型代表了第一个物体放在那个角落,默认为左上角(五)、Start Axis:Axis枚举类型表示优先排列单元格Horizontal:优先水平排列单元格Vertical:优先垂直排列单元格(

2021-04-25 17:35:13 822

原创 Unity2D UI拼接——Sprite图片部分縮放

在缩放图片时,只需要放大中间局部的部分,而不需要缩放侧边时,通过Sprite操作完成1.找到需要缩放的图片,进入Inspector界面2.点击Sprite Editor3.选中需要缩放的部分,点击Apply应用4.把在调用该图片的Image组件中的Image Type选择到Sliced即可...

2021-04-25 17:11:45 1095

原创 Unity2D UI——富文本

一、富文本使用富文本可以单独调整text中文字的样式,且还可以插入图片二、常见用法<color=green>绿色修改字体颜色加粗 斜体<size=50>largely (size还可以用来设置图片大小)<material=2>texturally 修改材质,对文本网格有效(Text Mesh)<sprite=2> 选择asset文件中index为2的图片voffset(垂直偏移用法)<voffset=2em>膜<v

2021-04-22 17:35:17 577

原创 Untiy2DUI拼接——构造Canvas

Untiy2D——UI拼接一、构造canvas(环境)1.先建立一个Canvas2.在Canvas下建立一个任意的UI组件3.在该UI组件下在建立一个Canvas,并将第一层的Canvas的三个Component全部清除4.将其拉成预制体5.进入预制体中将其Canvas下的都清空即可...

2021-04-22 15:08:21 409

原创 集合类——列表List

一、数组和列表的对比数组:大小固定,空间不足也不能再次申请,可以存储基本类型和对象类型列表:空间是动态增长的,方便添加、删除数据以及其他操作,仅能存储对象类型二、列表的本质列表内部数据是使用数组进行存储的一个空的列表内部会有一个长度为0的数字当给列表添加元素时,列表的容量会扩大为4当添加第五个元素的时候,列表的容量会扩大为8添加第九个元素,列表容量扩为16…以此类推。即列表中的容量发生改变的时候,会自动创建一个新的数组,并且通过Array.Copy()方法将旧数组中的元素复制到新数组中。

2021-04-13 15:47:17 231

原创 派生类的构造函数

一:调用父类无参构造函数格式父类class BaseClass{ public BaseClass(){ Console.WriteLine("baseclass无参构造函数"); }}子类class DerivedClass:BaseClass{ public DerivedClass():base(){ Console.WriteLine("这个是DerivedClass的无参构造函数"); }

2021-04-10 19:21:26 116

原创 密封类和密封方法

密封类无法被继承。方法想要成为密封方法前提是其必须是一个已经重写的方法表示这个方法不能再次被重写了。格式密封类sealed class 方法名{}密封方法父类class BaseClass{ public virtual void Move(){} }子类class DerivedClass:BaseClass{ public sealed override void Move(){}}...

2021-04-10 17:35:23 75

原创 C#隐藏方法

方法的签名:方法的返回值,方法名以及参数列表统称为方法的签名隐藏方法定义:如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有分别声明为virtual 和override,派生类就会隐藏基类的方法(派生类的方法要用new关键字声明)和重写方法不同,重写是吧原来的方法改了,隐藏只是把父类中的方法看不到了,实际仍然存在,使用父类声明对象仍然可以访问基类class MyBaseClass(){ public void Mythod(){ }}派生类(在派生类中会把基类的

2021-04-10 16:34:15 368

原创 虚方法

把一个基类函数声明为virtual,就可以在任何派生类中重写该函数class MyBaseClass{ public virtual string VirtualMethod(){ //方法内容 }}在另一个派生类中重写另外一个函数时,要使用override关键字显示声明class MyDerivedClass:MyBaseClass{ public override string VirtualMethod(){ //重写

2021-04-10 16:23:24 63

原创 堆和栈与数据类型的关系

一、堆和栈内存分为堆空间和栈空间堆空间:空间较大,读取速度慢栈空间:空间较小,读取速度快堆是一块内存区域,堆内的内存能够以任意顺序存入和移除二、数据类型C#的变量可以分为三类:值类型(Value types)引用类型(Reference types)指针类型(Pointer types)(一)、值类型可以直接分配一个值给该类变量,它们是从System.ValueType中派生出来的,如下图值类型只需要一段单独的内存,用于存储实际的数据(单独定义的时候放在栈中)(二)、引用类型(放

2021-04-10 14:36:41 240

原创 c# var的意义

//使用var声明变量代表变量可以为任何类型var i;//当var声明的变量被赋值过一次后,变量的类型就确定了,并且不在更改i=5;

2021-04-09 18:00:40 290

原创 Unity collosion.Message方法

Unity collosion.SendMessage方法SendMessage:会向该游戏对象上的所有Monobehavior脚本发送消息,发送的内容便是:SendMessage(“函数名”,参数,是否必须有接收方法)。1.第一个参数(函数名)指的就是所要传递的消息的名称, 游戏对象所有Monobehavior脚本里与该名称同名的方法将被调用。2.第二个参数指的是方法所需要传递的参数,可以为null3.第三个参数指的是是否必须有接收方法,SendMessageOptions.RequireRec

2021-04-01 14:57:09 152

原创 Unity中FixedUpdate和Update函数的区别

Unity中FixedUpdate和Update函数的区别Update():每帧执行,代码每秒执行N次,但是由于电脑每帧的时间不是稳定的所以每次执行的时间间隔是不同的FixedUpdate()(物理帧执行):执行顺序在Update之后,每帧执行,每秒执行N次,但每一帧的时间都是固定的,即每一帧相隔的时间都是相同的因此,如果使用Update()来写物体的物理关系的时候(例如碰撞等),物体的每帧受力不均匀就会出现一些问题(例如2D碰撞造成图片抖动),所以涉及到物理关系使用FixedUpdate()更好一些

2021-03-22 11:31:37 667

原创 Uncaught TypeError: Cannot read property ‘0‘ of undefined

Uncaught TypeError: Cannot read property ‘0’ of undefined该错误在第一次用cocos写flappybird项目时发生,是由于数组声明和引用时名称没写对导致

2020-07-08 14:07:48 772

原创 2D游戏主角移动速度限制(带方向)

2D游戏主角移动速度限制(带方向)要限制最大移动速度的时候,最使用的就是if ( this.xSpeed > this.maxMoveSpeed ) { this.xSpeed = this.maxMoveSpeed }但是如果是带有方向的速度就要使用如下方法if ( Math.abs(this.xSpeed) > this.maxMoveSpeed ) { // if speed reach limit, use ma

2020-07-06 18:19:14 281

空空如也

空空如也

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

TA关注的人

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