自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Unity(MVC思想)

一下演示使用MVC和不使用MVC的做法区别。 前两个没有使用MVC mainPanel是该脚本名字每个场景中不一定存在该面板,单纯的显隐需要去手动挂载过于麻烦。所以自己读取创建面板出来(每个场景仅创建一次),存下该面板,执行其他逻辑大项目可以直接删,防止场景上物体过多获取主面板身上脚本,本来是用来判断是否为空的。 这里可以用于外界调用更新方法为了防止修改,写一个属性,仅允许get'Unity中没有action,只有自带的UnityAction,且需要引入命名空间事件本身私有,提供给外部添加移除方法即可。

2024-04-11 14:32:35 1111

原创 Lua热更新(AssetBundle)

这六个只做了解,重要的是上面的。

2024-04-09 22:00:59 858

原创 移动平台相关(安卓)

调用Android中的方法,就会得到字符串,然后字符串回调给这个方法↑这个方法再映射到Unity中。int类型会默认被当成是索引的重载,所以数组本身是int,那就只能通过指定索引来删了。只要别人提供的不是Unity的SDK,而是安卓的SDK,就都需要进行这一步交互项目的创建。再打开其中的com文件夹,复制其中的unity3d文件 粘贴到对应路径下的com中。接下来,根据文档中的说明改写配置,但要注意不要全部复制,官方的写法版本可能较老。如果记不住优先级,那么就直接用括号把你想优先运算的部分给括起来。

2024-04-07 13:31:19 951

原创 A星寻路算法

格子类 格子类型,可以走或者不能走,包含openList、closeList。上文提到的消耗和父对象。1.不一开始实例化列表,是为了在方法中才确定它的容量。start在while循环外面,所以可以直接赋值的。我们写变量常常在函数内部才赋值,这样每次调用函数时确保一开始变量都是清空的。用面向对象来实现,A星寻路的管理器: (管理所有的格子)因为一开始的八个点的寻路消耗是知道的,固定的数。写方法之前都应该写一些限制,和特殊情况的判断。因为这个地图左上角是0,0。2.5 放入列表的方法。

2024-04-02 22:22:14 209

原创 Shader(入门级)前半部分

如果一个矩阵有逆矩阵,那么他们的积为单位矩阵。而和转置矩阵的积也是I的话,说明它的转置矩阵就是它的逆矩阵。在材质的Custom中可以看到新建的shader,在Properties中可以快速看到可编辑的属性。注意的是这个xyz轴是模型本体的,原点也是模型的位置。结果省流:乘以观察空间的xyz是肯定的,然后分母都是2,x是除以宽度,y是除以高度。记得对Z轴方向做一个取反处理,然后这个矩阵乘上点,就与世界坐标中的点是一样的了。深度测试,你可以理解为它不停的去比较不同模型的同一个屏幕位置,到底该渲染哪一个。

2024-04-01 23:25:30 793

原创 Lua热更新(xlua)

字典:String_Dic=CS.System.Collections.Generic.Dictionary(CS.System.String,CS.UnityEngine.Vector3)但因为格式问题需要注意。如果你把尾缀改成了txt,那么就应该是filepath+".lua.txt" 不要相信窗口中的名字。因为是file.lua.txt 文件后缀实际是txt,前面的.lua变成了文件的一部分。如果你要找的是子物体的子物体,是没法直接transform.find找的,只能一层层间接找。

2024-03-27 21:01:33 2253

原创 Lua热更新(Lua)

下载Lua For Windows Sublime Text(仅用于演示,实际项目使用VsCode) Ctrl+B运行。

2024-03-23 15:04:35 1181

原创 Unity基础框架

如果有很多个这样的单例模式对象,创建他们时都要重复的写单例模式代码。那么能不能利用泛型来减少这部分重复的工作量呢。单例模式基类,最简单的写法。

2024-03-20 19:32:36 699 1

原创 网络开发基础

基本要求每个IP对应不同设备,设备上又有若干应用程序对应不同端口号。需要IP+端口才能准确通信MAc是设备本身,IP是设备所在地,端口是设备上的应用程序(多个)我们在编程时,传入IP和端口号就行了。Mac是埋在底层原理中的,不用太深究 2.集中式3.分布式4.C/S 模型5.B/S 模型6.P2P (用的少) 一般都是用域名上网,因为IP地址不好记。 域名解析,就是将域名转换为IP地址IPHostEntry一般用于接收返回值,不会单独去申明。记住这里面的成员方法就行引入System.Net后,打一个IP

2024-03-15 13:50:38 925 1

原创 C#四部曲(知识补充)

各种源码→根据.NET规范编写→(虚拟机)生成CIL中间码(保存在程序集中)→转成操作系统原代码跨语言 ↑ 跨平台 ↓(Mono)c#脚本→MonoC#编译器→IL中间代码→monoRunTIme虚拟机→操作系统原生代码(IL2CPP)mono直接将中间代码转原生代码。IL2CPP先将中间码转C++,再转原生码。

2024-03-12 23:36:44 1854 1

原创 数据持久化(二进制)

目录一览。

2024-03-11 11:01:18 862

原创 数据持久化(Json)

https://www.bejson.com/json/col2json记得检查一下,得到的Json格式是否有问题Excel -json文件-读取文件-新建对应类-litJson转列表 写入时会自动创建文件。 如果要在前面加一个文件夹,得保证有一个文件夹(也要加 / ) 读取路径字符串注意区分,类的需要点出命名空间System,而且是Serializable,变量才是普通的SerializeField公开的变量不需要加。 而保存的类本身也可以不加,只有当他内部存在其他类作为成员时,作为成员变量的类要

2024-03-08 19:50:52 719 1

原创 UI-UGUI

一个Canvas下其实可以创建多个Panel面板。

2024-03-06 23:31:25 1115 1

原创 Unity四部曲(核心)

需要先改成Cube复杂的展开留到unity进阶再说。

2024-03-05 16:11:30 1991

原创 Unity四部曲(基础)

其实这种写法也是向下取整 ceil floor round'4的二次方可能需要手动设置它到目标值,因为它不会插值到目标值。lerp返回一个浮点数,不是方法。

2024-02-09 15:51:29 754 1

原创 数据持久化(PLayerPrefs)

如果这个键不存在,它会返回一个该类型的默认值,我们也可以指定这个默认值。另外,如果键名相同,会被覆盖。也可以用来判断是否重名。

2024-02-04 14:18:22 429 1

原创 Unity四部曲(入门)

右上角单个轴可以点,会切换3种视角。记不住API到时候用到了再查,比如我想要得到自己面前两个距离的点,就不需要根据原点坐标,而是可以根据自己坐标系来得。可以不继承,就和Vs当中的类一样了,可以申明但不能挂在gamobject上。这个是世界坐标轴,如果用this.transform.forward 则是局部坐标系,是物体自己的面向。注意这里的CUBE(1)是名字,不是什么索引,这个物体在外面就叫这个名字。点击Execution可以设置脚本先后顺序,在自定义脚本之前的,是系统默认会先执行的脚本,不用管。

2024-01-30 21:19:46 967 1

原创 c#四部曲(进阶)

经常增删数据,用链表。增删较少而查找频繁,用顺序表。特性本质上也是一个类,可以给成员变量、方法提供额外信息。后续可以通过反射来获取额外信息这就是一个特性类了后缀必须加Attribute,调用时自动省略后缀 [MyCustom]这里传参是因为这个特性类里面有一个带参的构造函数。使用特性,等于调用该特性的构造函数类前,成员变量前,函数前,函数参数前都可以加。

2024-01-14 23:05:09 1011 1

原创 C#四部曲(核心)

另外,虚方法和抽象方法都可以无限的被子类的子类重写下去另外,抽象类不能实例化自己,但能用来装子类。

2024-01-08 16:44:00 939

原创 c#四部曲(基础)

核心进阶请养成用三目运算符(三元表达式)的习惯。在开始之前先考考你,判断两个数中的最大值,并返回它。最简单的写法1:2。

2023-12-30 17:25:09 990

原创 c#四部曲(入门)

想要完成某个功能,需求分析-应该有哪些模块?逐个实现-每个功能想办法如何实现,然后把他们组合起来 测试调试-拼接后适度的优化。

2023-12-25 18:07:58 832

原创 C#编程-第六季-编程内功修炼-算法

回到钢条问题,假设只切一下分成两段,那么第一段就是从1开始,后面那段就是n-1;然后从2开始,后面那段就是n-2;以此类推。现在要切成三段的话,就是在第二段的基础上,再重复切割成两段的过程。(第一段的结果已经保存,只要计算二三段之间的情况,而二三段不就是递归调用一二段的算法吗?要么就不切割,计算这两种情况的最优解。

2023-12-25 14:38:01 48

原创 Unity中实现平台跳跃功能(不使用物理系统)

还是同一条原则,不要使用过多的if判断,而是直接设置他的值,并且让他与条件自身相关,可以让代码耦合度大大降低,而且准确。平台逻辑,当玩家x值在平台的左右坐标之间,并且y轴大于等于平台的y轴(高度)时,就认为玩家是可以落到这个平台上面的。滞空转下落,则bool值 isFall==true来作为切换条件,滞空时间未知,所以不需要等待播放完毕,取消勾选。为-1时,即向左,我们让人物的旋转参数=(0,-90,0)。有的平台有影子,有的平台可以主动跳下,脚本定义一个公开的bool,在外界根据不同的平台去勾上就好了。

2023-12-17 20:25:56 704 1

原创 事件中心(自用)

这个方法返回一个bool值,可以用于if判断语句当中,如果成功取出则返回true,如果没有取到这个键,那么就是false,后面的逻辑也就不执行了。关于为什么用CallBack不用内置的Action,因为自己定义的CallBack理论上可以有无限个参数,而内置的Action会有限制(虽然一般够用),所有这个课里用的是自己写的类。委托类型不一致时,同样无法退订,也抛出错误。而这个脚本则是挂载到按钮上,当按钮被按下时,监听并触发事件,也就是执行我们写好的Broadcast方法,它会执行委托中所有被订阅的函数。

2023-12-16 22:41:46 56

原创 FGUI代码控制(自用)

UIPackage.AddPackage("FairyGUI/Package1") 加载unity下的fgui包,路径。

2023-12-16 15:45:33 166 1

原创 网络服务器(自用)

玩家调用客户端方法,发送给服务器。服务器接收信息,更新玩家信息。发送玩家信息给其他所有玩家,其他所有玩家接收消息,更新玩家信息。在toDoList里面塞入这样一条信息,然后在主线程的switch方法中去处理该信息。要生成服务器发布版本的话,把Debug模式改成Release,然后“重新生成解决方案”,直接运行会看不到报错。每次塞入该消息时会被主线程所处理,而处理的内容则是修改之前的发送消息方法。异常处理,当客户端断开连接时,结束本次循环。接收完服务器发来的玩家信息列表后,在玩家池里去处理。

2023-12-15 20:20:40 35

空空如也

空空如也

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

TA关注的人

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