- 博客(77)
- 收藏
- 关注
原创 C#的委托和事件
委托是 函数(方法)的容器,可以理解为表示函数(方法)的变量类型,用来存储、传递函数(方法)委托的本质是一个类,用来定义函数(方法)的类型(返回值和参数的类型)DoEvent是Test类自定义的函数,调用了其中的事件。不同的 函数(方法)必须对应和各自"格式"一致的委托。基本没有区别,只是事件不能在外部直接赋值和调用。③Action<>:有参无返回的委托。②Func:无参有一个返回值的委托。①Action:无参无返回的委托。④Func<>:有参有返回。二、系统定义好的委托。四、事件与委托的区别。
2024-05-21 09:41:34
517
原创 公共Mono模块笔记
3.可以统一执行管理帧更新或定时更新相关逻辑(不管你是否继承MonoBehaviour)1.通过事件或委托 管理 相关更新函数(如AddUpdateListener)在其他脚本定义协同程序,调用Mono管理器开启协同程序。让不继承MonoBehaviour的脚本也能。2.提供协同程序开启或关闭的方法。1.利用帧更新或定时更新处理逻辑。一、公共Mono的主要作用。2.利用协同程序处理逻辑。
2024-05-20 11:15:51
283
原创 Minecraft服务器badly compressed packet报错解决方法
虽然写着1.16.4但是1.16.5也可以使用,这个MOD也有其他版本的,找到对应版本安装即可。因为已经解决了问题所以懒得改回去截图了,随便找的网图。在服务端和客户端都安装。
2023-12-18 10:51:43
979
原创 Unity开发之观察者模式(事件中心)
它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主体是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知。玩家要完成一个任务“杀死三只哥布林”,玩家点击鼠标左键杀死一只怪物,如果这个怪物是哥布林,那么任务计数加1,达到3后提示任务完成。此时按下鼠标左键五次,可以看到触发了提示但是因为杀的不是哥布林,所以任务没有完成。其中还会显示玩家击杀了什么怪物,击杀后获得多少金钱。
2023-10-24 17:05:46
906
原创 Unity得到脚本名
很简单的技术但是我基础不好所以我还是记下来,因为到网上搜了也没人说怎么搞,只有得到游戏物体名字的。其实就是得到一个脚本的Type,Type里面有Name属性可以把脚本名作为字符串返回。
2023-10-19 11:28:41
349
原创 C#内映射lua表
LuaMgr是自己写的一个Xlua管理器,他是单例模式管理器,里面定义了luaEnv并实例化。GetInstance方法是得到这个LuaMgr单例类的,Global返回了luaEnv内的_G表,其中_G自带Get方法得到对应表。类里面的成员都必须是公有public的,而且成员名字要和lua脚本内的类相同。万能类LuaTable装表(不建议使用)只要把Get的泛型换成对应的类型即可。得到Dictionnary。都是通过同一个方法得到的。
2023-10-13 16:03:52
1187
原创 Unity中使用Xlua调用lua相关
require寻找文件的逻辑是,先找AddLoader中自定义的路径(可以有多个路径)中有没有相应文件,再去Resources下查找。这样只能读取Resources文件夹下的脚本,但是我们做热更新需要从AB包中读取,所以需要自定义加载路径。
2023-10-10 11:09:17
1280
原创 AB包的依赖关系
有时候一个模型所需要的东西可能在不同的包里面,例如蓝色立方体的模型和材质在不同的包(mode和head)里,这时需要加载两个包才能让这个球正常显示。2、如何获取依赖关系并加载。
2023-09-23 12:36:17
291
原创 Unity的AB包相关
参数填true会把已经加载使用也卸载了,false只卸载加载的资源。在这个界面左边右键,CreateNewBundle。ab.Unload(bool a)函数。选好平台路径,点击Build。将要打包的模型制作成预设体。
2023-09-23 11:02:33
280
原创 Unity中Transform移动相关
(3)先在世界坐标系取以自己正方向的向量,也就是这个斜着45°的Z轴方向,再把这个方向放在自己的坐标系上移动,所以最终是朝着世界坐标系X轴方向移动。(2)先在世界坐标系取以自己正方向的向量,也就是这个斜着45°的Z轴方向,再把这个方向放在世界坐标系上移动,所以最终是朝自己面朝向移动。(1)先在世界坐标系取(0,0,1),然后在世界坐标系上向(0,0,1)移动,所以是朝世界坐标系 的Z轴正方向移动。(4)先在世界坐标系取(0,0,1),然后在自己的坐标系上向(0,0,1)移动,所以最终是朝自己面朝向移动。
2023-09-02 16:24:41
688
原创 Unity中GameObject中的常用方法
如果类继承了Mono,那可以不写GameObject。注意:这些方法都无法找到失活的对象!(1)根据对象名(游戏物体)查找对象。(2)通过tag来查找对象。(1)为对象添加脚本。
2023-09-02 11:12:06
835
原创 Unity生命周期函数
它的时间间隔 是可以在 project setting中的 Time里去设置的。想要当一个对象(游戏物体)被激活时 进行一些逻辑处理 就可以写在这个函数。当对象(自己这个类对象,就是这个脚本)被创建时 才会调用该生命周期函数。类似构造函数的存在 我们可以在一个类对象创建时进行一些初始化操作。它是每一帧的执行的 但是 这里的帧 和游戏帧 有点不同。一般这个更新是用来处理 摄像机位置更新相关内容的。因为它是在对象 进行第一次帧更新之前才会执行的。对象(游戏物体)失活时做一些处理。它主要是用于 进行物理更新。
2023-09-02 10:49:58
711
原创 Unity使用Cinemachine插件实现摄像机跟随和震动
4、创建一个空物体,向它添加PolygonCollider2D,调整好可视范围的大小以后在CinemachineVirtuaCamera的Extensions的AddExtensionzhong中选择。调用这个GenerateImpulse就可以触发震动,我将摄像机脚本写成单例模式,方便调用。2、创建Cinemachine的摄像机,我的项目是2D项目所以创建2D摄像机。3、创建一个摄像机控制脚本,添加给摄像机。1、在select选择添加这个组件。2、创建一个空物体,给他添加这个组件。
2023-07-24 17:04:03
2354
原创 Unity之简单的NPC状态机
这里的patrolState和chaseState是在NPC具体的脚本里注入的,例如野猪的这两个状态就在野猪的Awake里面注入。如果我们要给野猪添加新的状态,只需要写一个新的状态机脚本继承状态机基类,并在里面写好相应逻辑,然后到怪物脚本(Boar)定义那个状态的变量,再到SwtichState函数多写一个case即可。要使用状态机,我们可以先定义一个状态机基类。假如我还需要更多的状态(虚弱、眩晕),那我这个update函数就会非常的复杂,也不便于后续的修改,我们知道一般最好是添加代码而避免修改代码的。
2023-07-20 16:48:57
502
原创 关于Unity动画卡在第一帧的处理方法
经过检查发现,其实是进入死亡动画后,isDead还是true,所以会从死亡动画无限再次进入死亡动画,看起来就像是卡在了第一帧。进入条件为isDead是true,当角色死亡时这个条件就会设置成true。Can Transition To Self取消勾选,就不会无限循环了。今天在制作人物的死亡动画时出现了题目所说的问题,以下是动画的状态机。因为任何状态都可能死亡,所以是从anyState进入的死亡动画。在AnyState转换到Dead的线上设置。结果出现了卡在这个动画的问题。
2023-07-03 19:25:30
1309
2
原创 Unity新输入系统
这里改成.NET Framework,下面改成input system package(New)在你的player物体上添加Player Input组件,然后CreateAction。点击它,在右侧窗口上打钩,生成一个对应的类,以后可以调用这个类来进行操作。(3)PlayerController代码如何使用新系统。此时运行游戏可以发现已经读出的输入的按键值。
2023-07-02 16:32:49
441
原创 Unity之反向动力学IK
(5)设置好位置之后将IK节点设置成Player的子对象,防止Player移动的时候出现问题。ChainLength设置好后CreateTarget,会发现IK节点出现了子对象。将权杖末端的GameObject拖入到Effector中。(1)给物体的父对象加上IK Manager的脚本。添加后会发现出现了一个Player的子对象IK节点。(2)在人物四肢骨骼末端和权杖末端创建空对象。3、小练习:鼠标指向哪,手指向哪。(4)选择IK节点进行移动。
2023-06-05 20:04:17
489
原创 Unity2D骨骼动画制作之图集图片编辑
(2)将各个物体拖入为子对象(如果要变成骨骼子对象则要拖入到骨骼对象下面)将要编辑的图集Sprite改成Multiple模式。3、 编辑骨骼(跟单张图片一样)(1)创建一个根物体(空对象)4、为图之间创建联系。
2023-06-02 17:12:40
258
原创 Unity2D骨骼动画制作之单张图片编辑
点击Create Bone在图片需要创建骨骼的地方点击即可,如果要创建一个骨骼的子骨骼,可以在父骨骼的末端延伸,或者点击父骨骼的根,然后再在需要创建的地方创建即可。②给这个gameobeject加上SpriteSkin脚本。编辑骨骼,可以改变骨骼的位置、长度、方向、名称等等。④在Animation窗口创建动画,进行编辑。预览模式,可以预览动作并不会真正的改变设置。拆分边,用一个新的顶点分离一个边。拆分骨骼,将一个骨骼一分为二。边缘细节,值越大,轮廓越细致。选择骨骼用的Sprite。细化程度,控制蒙皮细节。
2023-06-02 16:41:06
1425
原创 Unity之2D序列帧动画
注意:可以修改动画帧率,来控制动画的播放速度。注意先删除窗口中的动画,窗口中没有 动画时再修改帧率。直接将图片拖入Hierarchy层级窗口中。3.直接将某一个动作的序列帧拖入窗口中。
2023-06-02 16:00:08
1075
原创 Unity新动画系统之动画状态机Animator Controller
如果勾选那会让动画播完才切换动画,不勾选的话会立刻切换动画。(3)切换动画退出时间 Exit Time。为对象添加动画后会自动添加到状态机中。层级:可以在右侧齿轮设置参数大小。(2)Animator的API。(1)会在创建动画时自动创建。动画会在1和2之间不断切换。(1)Animator组件。1、创建动画状态机文件。2、动画状态机窗口相关。5、代码控制动画切换。
2023-06-01 10:18:08
1350
原创 Unity老动画系统Animation
ClampForever:播放结束会停在最后一帧,并且会一直播放最后一帧(相当于状态不停止),表现效果和Once一样,但是逻辑处理上不同。Play AutoMatically:是否一开始就自动播放默认动画。Based On Renderers:基于默认动画姿势剔除。Animations:该动画组件可以控制的所有动画。Animate Physics:动画是否与物理交互。Culling Type:决定什么时候不播放动画。Animation:默认播放的动画。2、Animation参数。Once:播放一次就停止。
2023-05-29 16:15:02
1202
原创 Unity之Tilemap拓展包
创建Create----2D----Tile----RuleTIle。在其中可以自定义瓦片排列的规则。1、RuleTile规则瓦片。
2023-05-28 15:11:56
312
原创 Unity之SpriteShapeController
Pixel Per Unit:禁用拉伸UV时才有,Unity单位对应多少像素,较高的值会较少纹理的大小。Optimize Geometry:优化三角形数量,勾选后会最小化精灵图形中的三角形数量。Corner Threshold:角阈值,当拐角处的角度达到这个阈值时将使用角图片。Stretch UV:是否拉伸UV,如果勾选纹理的UV将伸展到整个精灵形状的直线上。Adaptive UV:自适应UV,如果开启,会自动帮助我们判断是平铺还是拉伸。Is Open Ended:是否是开放的,不封闭的。
2023-05-27 10:55:32
1477
原创 Unity之SpriteShapeRenderer
Fill Material和Edge Material:填充材质和边缘材质。该控件主要是控制 材质 颜色 以及和其它Sprite交互时的排序等等信息。Sorting Layer和Order in Layer:排序相关。Mask Interaction:遮罩相互作用规则设置。
2023-05-27 10:52:28
367
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人