自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 对象池的缺点及几种优化方法

当超过最大值maxSize时,list.Count - remainCountClear 为要清除多少个对象。此时对象池不够,需要添加更多的对象。而当增加完对象后,大量对象长时间存在内存里没有被使用,就导致了内存消耗。但是这种方法又会导致新的问题:清理过后,下次再释放1个对象,又会超过最大值,可以使用1个字典存放每个对象的使用时间,一旦超过了最大使用时间则触发清除。如果对象池内的数量超过了最大值,则触发清除对象,直到数量为最大值。比如仅在某个时间段突然需要大量对象,其他时间只用少量对象。

2024-04-08 16:18:08 185

原创 Unity中解决斜坡移动的办法

通过向玩家脚下发射一条射线,获取到平面的法向量。然后比较玩家移动方向和法向量的夹角。如果angle>90 && angle<180,则向上走。如果angle>0 && angle<90, 则向下走。

2024-04-05 15:36:30 203 1

原创 重新回顾Unity生命周期

Awake:不管有没有勾选组件启用,都会在GameObject生成后一开始调用。没有勾选MonoTest,Awake也会调用,但是其他的周期函数不会调用。但是如果把GameObject隐藏掉,那么所有的周期函数都不会执行了。初始化阶段:Awake->OnEnable->Start。Start:必须勾选组件后才会调用,不然不会调用(注意OnEnable在Start之前。勾选上了,则其他的周期函数开始调用。

2024-03-26 12:13:49 209

原创 Lua CAPI函数说明

出栈nargs+1,就是说如果没有参数时,他也会把当前栈顶出栈,如果栈顶不是函数则报错。

2023-09-19 13:41:58 122

原创 关于NGUI的事件系统

2.他会在Update检测鼠标,根据鼠标状态来确定是拖拽还是点击等操作,用SendMessage发送不同的事件。UICamera:虽然写作Camera,但是实际上负责的是事件的处理功能。1.发送射线,根据射线打到的物体,设置当前事件的GameObject。

2023-09-04 10:50:36 69

原创 Unity AB包详解

图8为LZ4,加载速度较快,跟NoCompression速度差不多,第二次加载速度很快,暂时不清楚原因。图6为No Compression,加载速度是最快的,并且第二次加载速度很快,暂时不清楚原因。③LZ4:包体压缩中等,速度较快,速度跟No Compression差不多(推荐使用)图1中的model为41.6MB,依照3个选项分别打成3个包,如图2,图3,图4,图5。②LZMA:包体压缩到最小,但是解压速度最慢,加载的时候会加载整个包。图7为LZMA,加载速度最慢,第二次加载速度稍快。

2023-07-14 15:54:08 696 1

原创 向量点乘和叉乘在Unity中的应用

上面的代码可以获取玩家和物体的方位,首先根据叉乘获取左右方向,之后再根据点乘获取前后方向。当点乘>0的时候,两个向量所成的夹角0的时候,a在b的左边;叉乘y值>0的时候,a在b的右边。

2023-07-12 11:50:43 370 1

原创 常用的六种排序代码,基于C#

【代码】常用的六种排序代码,基于C#

2023-06-28 11:23:17 134 1

原创 剖析Unity中的EventSystem

1.PointerInputModule:检测如鼠标按下等事件2.ExecuteEvents:负责调用各种Handler(如IPointerClickHandler)3.EventSystem:调用BaseRaycaster的射线检测4.BaseRaycaster:实现射线检测的逻辑所以,要使用unity自带的事件系统检测3d物体,则需要以下几步:1.创建EventSystem物体2.将摄像机挂载上PhysicsRaycaster组件3.实现PointerHandler接口。

2023-06-17 18:44:40 361 1

原创 RectTransformUtility方法说明

/*这个屏幕坐标相对于矩形中心点的位置*/ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector2 localPoint);

2023-06-14 11:36:18 157

原创 Skynet入门(还没开坑...)

skynet配置表中的root路径如果是./,表示是执行命令时,当前所在的文件夹(pwd查看)

2023-05-24 15:39:32 67

原创 protobuf文件注意事项

protobuf文件注意事项

2023-03-07 09:47:43 61

原创 lua string模式匹配详解

string模式匹配

2022-10-01 12:13:16 2098 1

原创 关于Unity Meta文件的简单理解

关于Unity meta文件

2022-08-26 20:59:46 2854

原创 PlayableAPI学习笔记(待续..)

Graph相当于一个AnimatorController或者Manager的作用,负责管理Playable的生命周期所有类名有Playable的,创建都需要使用.Create,不是直接new创建混合器需要先创建一个MixerPlayable//可以在一开始时指定端口数量//AnimationMixerPlayable mixer1 = AnimationMixerPlayable.Create(graph1, 2);//也可以在后面再设置端口数量//端口供后面图连接使用AnimationM

2022-04-23 19:53:17 291

原创 Lua笔记

lua中使用类中的方法来访问自己类的属性 几种方式print("--------分割线---------")Student = { age = 18, ["name"] = "老王", -- 写在表里面的方法,只能使用方法名 = 函数 [[-- 在类的内部与外部想要增添修改该类的方法时 都不允许下面的写法,除非是使用冒号--]] -- 不能直接声明函数function Fun(),否则会报错 --1.加类名.属性 printName = function() print("

2021-12-10 09:20:02 145

原创 简单理解Unity中叉乘的方向

由于Unity使用的是左手坐标系,所以我们这里采用左手定则来表示坐标系,如图拇指方向为X轴正向,食指为Y轴正向,中指为Z轴正向在叉乘计算方向的时候利用好这三根手指,可以很好的判断叉乘方向。在调用Vector3.Cross时,**食指为传入的第一个向量,中指是第二个向量,拇指则是叉乘的方向了。**下面是具体的步骤以食指代表的向量开始旋转,旋转到中指处,如果旋转的角度小于180度,那么向量的方向与拇指的方向是相同的;反之,发现食指顺时针旋转到中指后超过了180度,那么向量的方向就是拇指的反方向。上图

2021-11-27 15:42:38 6800

原创 Unity手机调试的几个注意事项

测试了很久,总算成功在真机上调试Unity安卓项目啦!下面说下具体设置步骤1.先将USB数据线插到电脑上,之后手机开启USB调试功能(手机有这个功能的话一定要开启,不要忘了!!否则无法调试)2.打开UnityRemote5,启动Unity。注意顺序不要搞反了,如果先启动Unity后再启动Remote的话,很可能会因为识别不到而没反应;同时记住Remote不要切出,否则可能会没反应3.打开Edit->ProjectSettings->Editor,改成安卓设备4.打开Edit->P

2021-10-31 16:53:00 3170

原创 关于xlua中的一个坑(大概是坑)——xlua对扩展方法的支持问题

xlua似乎不支持调用对委托的扩展方法,如下我在C#里面为UnityAction扩展了一个方法,用来添加委托,之后我本来打算通过lua来调用这个扩展方法,但是结果报错了报错信息如下我一开始以为这可能是lua调用扩展方法产生的的问题,但是我又写了几个扩展方法,在lua中都可以正常使用,唯独这个对委托的扩展方法会报错我不知道这是我语法的问题还是说xlua不支持这样,暂时记录一下,希望有大佬可以帮忙解决...

2021-10-10 15:48:04 1298

原创 xlua食用手册

加载lua脚本的方法方法一 LuaEnv env = new LuaEnv(); env.DoString("require('Welcome')");调用env.DoString(),就可以执行lua语法了,这里建议通过lua中require的方法调用另一个脚本,避免了大量字符串的产生xlua中使用require时,会默认查找Resources文件夹下的文件,如果查找不到会报错 并且在Resouces文件夹中的只能命名为.txt后缀或其他,不能使用lua后缀,这可能由于xl

2021-09-24 14:10:31 173

原创 UGUI相关知识点

画布的三种渲染模式:

2021-09-13 18:35:27 267

原创 Unity中TimeLine的注意事项(待续)

1.Cinemachine中创建的Virtual Camera在并不存在,只是影响添加了Cinemachine Brain组件的摄像机,相当于预先为摄像机提供几个移动的点位2.TimeLine最后一帧即是播放结束后,整个场景的状态,比如最后一帧物体被取消Active后,那么播放结束后将不会被自动激活3.当某个组件被放在TimeLine中,且TimeLine正在播放时,将暂时无法通过代码修改这个组件(比如移动,动画播放等将无法手动更改).........

2021-09-09 14:15:43 2437

原创 C#实现任意数组的指定数据类型排序

Unity萌新开发日记——实现任意数组的指定数据类型排序(本文使用冒泡排序)首先可以知道的是,一些常用的数据类型(如int, string等)自带了CompareTo方法,结果返回1或-1,直接调用这个方法就可以进行排序但是,如果我们需要对复杂的数据类型做排序(如下面的自定义类型Person),那么肯定需要自己写比较方法,否则自然不能进行排序如下图,这是实现了常用数据类型的排序使用泛型可以很容易的实现 实现了IComparable接口的数据类型的比较而这里我们的需求更改一下,改为对Person类

2021-09-07 16:12:24 1196

原创 Unity萌新崩溃日常——递归闪退问题

Unity中似乎并不提倡使用递归,我在写一个创建敌人的方法时,使用了递归来重复判断有没有路线被占用,如下using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// 存放敌人信息/// </summary>public class EnemyStatusInfo : MonoBehaviour { public float HP = 2

2020-11-29 11:40:34 420

原创 关于Unity中空指针引用异常的问题

2020.11.21在一个脚本中调用另一个脚本的方法时遇到的问题今天,在编写敌人路线模块时,我想要在WayLine脚本中调用EnemySpawn脚本中的IndexOfTheSelectedChild方法,如下 private bool isOccupied = true; EnemySpawn es;...

2020-11-21 17:45:49 1227

空空如也

空空如也

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

TA关注的人

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