- 博客(84)
- 收藏
- 关注
原创 热更新简介+xLua基础调用
开发者将测试好的代码,发布到应用商店的审核平台,平台方会进行稳定性及性能测试。测试成功后,用户即可在AppStore看到应用的更新信息,用户点击应用更新后,需要先关闭应用,再进行更新。什么是热更新广义:无需关闭应用,不停机状态下修复漏洞,更新资源等,重点是更新逻辑代码。狭义定义(iOS热更新):无须将代码重新打包提交至AppStore,即可更新客户端的执行代码,即不用下载app而自动更新程序。
2025-04-04 23:53:05
674
原创 Lua函数与表+Lua子文件加载与元表
使用函数将无固定值的参数进行排序(冒泡排序法),并返回参数个数。使用元表的_add元方法,实现两个Table的所有元素的合并。该系列专栏为网课课程笔记,仅用于学习参考。此为config文件中的内容。获得不规则Table的准确长度。Lua函数相关示例代码。
2025-04-04 20:35:07
86
原创 Lua环境搭建+Lua基本语法
前期准备:搜索并下载安装LuaForWindows,例:安装完成后开启cmd窗口,输入lua出现版本号证明成功下载安装。
2025-04-03 23:51:11
626
原创 异步加载+内存分析
通过Memory Profiler图观察,在以AB包为例观察其各功能在运行时内存的占用情况可知(本次测试观察Graphics&Graphics Driver),当仅加载AB包时,其内存会短暂出现短幅上升又下降的情况(该AB包为默认压缩状态,此过程可说明AB包在解压),最终下降到趋于运行无操作时内存占用量,说明加载AB包在运行时并不实际占用内存;当我们卸载AB包不销毁图片时,该张图片占用的内存不会被释放,而当我们重新加载AB包资源并加载其他图片覆盖未被销毁的图片,其图片会作为游离资源存放在内存中。
2025-04-01 21:44:17
305
原创 资源热更新演示+优化导出工具及依赖加载
补充AB包相关知识:导入到AB包的资源,包内部是不存在目录的AB(A)包与AB(B)包的依赖关系示例补充:Coin图片所在AB包:test1Image预制体所在AB包:deptest,由于Image预制体的Source Image使用了Coin图片,则deptestAB包就与test1AB包产生了依赖关系,见下图:资源的热更新演示相关代码:层级面板及挂载情况:运行情况见下图: DeterministicAssetBundle:将AssetBundle的哈希校验值,存储在ID中(默认开启)
2025-04-01 17:08:10
866
原创 AB包介绍及导出工具实现+AB包资源简单加载
AssetBundle是把一些资源文件,场景文件或二进制文件以某种紧密的方式(浅显理解例:压缩包)保存在一起的一些文件。AssetBundle内部不能包含C#脚本文件,AssetBundle可以配合Lua实现资源和游戏逻辑代码的更新热更新不关闭Unity应用的前提,实现游戏资源和代码逻辑的更新。
2025-03-29 23:56:21
1037
原创 编辑器检视器面板简单扩展2+编辑器检视器面板深度扩展1
位置点由HandleUtility.GUIPointToWorldRay发出射线计算问题,创建新的对象后,编辑状态会被取消,原因,新创建的对象,会占据Inspector面板,此问题有弹窗的Update,一直选中对象。DestroyImmediate会直接删除对象,不安全,有可能后续有代码处理逻辑编辑器下,对象没有脚本,生命周期函数不会运行,可以直接使用第二个API删除对象和列表中的数据。所以如果A是明文,B是密钥,C就是密文,使用异或实现的算法,可以将C密文利用B密钥,解出A即原始文字。
2025-03-27 20:50:40
560
原创 编辑器开发基础介绍+编辑器检视面板简单扩展1
项目中建立的Editor目录,编辑器相关的逻辑和资源会放在其内部,相关内容,在打包生成时,不会一起生成到项目中,玩家也不会使用到编辑器相关的内容。用于在C#运行时,传递程序中各种元素(类,结构体,变量,方法,枚举,组件)的行为信息的声明标签。Unity编辑器命名空间:UnityEditor,此命名空间,不要出现在游戏被发布的逻辑代码中,会导致项目打包失败!Plugins:需要跨语言调用的代码逻辑代码存储目录,手机SDK接入。StreamingAssets:只读,存储跟随游戏包的资源目录。
2025-03-26 20:57:01
418
原创 MVC基础概念及相应代码示例
以上代码仅供帮助理解MVC开发思想,未提供对应的UI各物体挂载及摆放,如想实践,自取代码进行相应修改调试。根据控制器调用模型的方式数量,在模型中编写对应数量的函数,以供调用。一个功能模块的代码逻辑(显示处理,数据处理,逻辑判定)都写在一起(耦合)U:Update修改数据。其他美术资源(模型,动作特效)逻辑判定实现(Controller控制器)数据处理实现(Model数据模型)C:控制器,负责流程控制和事件响应。显示部分实现(View视图)2.处理数据(数据模型脚本)M:数据模型,负责数据处理。
2025-03-26 14:48:57
685
原创 使用TripoAI实现图生模型及文生模型
所需软件:DeepSeek,即时灵感(豆包图像生成),TripoAI相关网址如下:DeepSeek:DeepSeek - 探索未至之境即时灵感(豆包图像生成):豆包 - 字节跳动旗下 AI 智能助手TripoAI:Tripo 网页版 | 随心设计、个性定制,打造属于您的 3D 世界文生模型在TripoAI中对于只有一个大概方向的模型较为友好,以作者测试生成的三花猫为例,见下图:综合文字内容查看,虽然未达到写实要求,但在简短语句中的完成度基本达到了8成,在实际项目中做做小NPC背景板还是个不错的选择。当然,A
2025-03-24 22:06:46
1152
原创 JSON数据修改的实现
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。JSON相对于XML来讲,数据的体积小,传递和解析的速度更快。数字,字符串,布尔,数组(链表),对象,null。该系列专栏为网课课程笔记,仅用于学习参考。所有XML元素都须有关闭标签。JSON比XML可读性高。XML必须存在一个父节点。XML标签对大小写敏感。XML必须正确地嵌套。同样具有很强的扩展性。JSON和XML对比。
2025-03-23 23:03:45
399
原创 Unity的JSON工具类+LitJson的引入及使用
数据:string j="{\"Num\":1, \"Name\":\"root\", \"IsWoman\":false}";数据使用(反序列化):将JSON字符串中存储的数据,转化为C#可用的数据格式,实现代码逻辑。LitJson(JsonMapper.ToObject())示例:引用前文的JSON道具数据(稍作修改)[System.Serializable] //类产生的对象数据,可以被序列化后存储。数据存储(序列化):将C#的数据格式,转化为JSON字符串,存储或传输。
2025-03-23 21:32:36
946
1
原创 拖拽实现+摇杆实现
半透明渐变贴图在ios设备下,使用压缩会造成图片质量损失,所以可以将半透明渐变UI切片单独制作真彩色图集。IBeginDragHandler:检测到射线后,当拖拽动作开始时执行一次回调函数。IDragHandler:拖拽开始后,有拖拽位置变化时,执行回调函数(每个移动)IEndDragHandler:拖拽进行中时,当鼠标或手抬起时,执行一次回调函数。DragArea本地坐标:控制摇杆(DragBar)的位置。如何通过屏幕坐标系下的点,转换到DragArea本地坐标系下的点。位置:相对量,需要有参照物体。
2025-03-18 22:44:21
535
原创 点击事件+长按实现
由于Unity是组件化开发思想,所以自定义按钮也是使用组件Script实现编写自定义事件步骤1.引入自定义事件命名空间(UnityEngine.EventSystems)2.实现自定义事件Interface3.用户交互会触发回调函数点击事件接口系列IPointerEnterHandler:鼠标光标移入射线检测区域,触发回调函数IPointerExitHandler:鼠标光标移出射线检测区域,触发回调函数IPointerDownHandler:鼠标在射线检测区域中按下,触发回调函数。
2025-03-18 19:02:53
272
原创 下拉菜单+DoTween插件
Item Image:下拉菜单中,存储选项的图片组件(来自Template下,每个选项会复制一份)Caption Image:当前选中的图片选项对应的图片组件(选中的选项图片,显示在这个组件中)Item Text:下拉菜单中,存储选项的文本组件(来自Template下,每个选项会复制一份)//在动画队列后方追加动画。Caption Text:当前选中的选项对应的文字组件(选中的选项文字内容,显示在这个组件中)DoTween是一个免费的Unity动画插件,少量代码即可实现常见的动画效果。
2025-03-17 21:26:20
937
原创 Slider,InputField,Scroll View,Scrollbar及Layout组件
Text Component:输入的内容,显示的文本组件Text:当时输入的内容值Character Limit:最大输入字符Content Type:输入的文本类型(数字,实数,数字英文,名称,密码)Line Type:行类型(单行,回车跳出,回车换行)Placeholder:输入框原始内容(默认显示)Caret Blink Rate:光标显示频率Caret Width:光标宽度Custom Caret Color:光标自定义颜色Selection Color:被选中文字的颜色。
2025-03-16 21:00:44
587
原创 事件系统简介+Button组件+Toggle简介
UI的射线检测会依次检测对象树下的所有元素,有任何射线检测成功,则会反馈到带有事件响应的组件(Button)中。Blocking Objects:遮挡事件的物体(2D物体【精灵片】,3D物体)若想要实现组内Toggle全不选的情况,勾选Group组件的Allow Switch Off即可。找到Button,OnClick事件,添加(脚本所在对象,并选择回调函数)Blocking Mask:遮挡事件的物体所在的渲染层。如果想实现射线穿透,可以将前面显示的UI元素的射线检测关闭。按下状态的颜色(按钮按下)
2025-03-16 12:16:43
486
原创 文本组件+Image组件+图集
Panel位于Canvas子物体,四锚点在四角,边距为零,所以Panel和Canvas一样大,Canvas和屏幕一样大,所以Panel和屏幕一样大,元素显示处理在Panel中正常,则屏幕中也正常。Color:用于混色,美术有时提供白图和色号,程序员对图处理,染成想要的颜色,可以减少包体大小。在Project Setting下的Editor窗口中,将Mode改为V2,此为新版精灵图集系统,将替代旧版系统。1,3,7,9区域不拉伸。将多个UI切片,合并成一张UI图,UI界面只加载一张UI图片显示。
2025-03-15 20:36:52
866
原创 UI基础概念+Canvas相关知识
修改Canvas下Canvas组件Render Mode属性:Camera,将相机拖给Canvas下Canvas组件Render Camera属性,将Cube位置调整到Canvas前。World Space:Canvas以3D物体的形式显示在场景中,将Canvas模式调整为World Space,再将Canvas放入相机可视范围内;Canvas在两个模式下(Overlay和Camera)会覆盖整个屏幕,所做屏幕UI显示时,只需要处理好Canvas中的显示即可。16:9下:美术一般都会按照16:9出图;
2025-03-14 21:41:21
900
原创 1D混合树+2D混合树+IK动画+Override Animator Controller
Threshold:阈值(-1~0运行的是blueAttack2动画权重越来越低,blueHurt权重越来越高;1.weight权重:BaseLayer层默认为1,如果希望armLayer层也有播放权限,需要将armLayer层的权重也设为1;通过动画片段的动画位移来计算的阈值,我们一般使用自己设置的;什么叫动画的重定向:其他模型的动画用作自身模型,虽然是不同模型,但播放的是同一套动作;注意:动作的重定向必须是两个骨骼动画是一样或者很接近的,否则不能实现动画重定向;2.不能改变原来状态机的切换逻辑;
2025-03-13 15:49:42
381
原创 NavmeshAgent组件+Animator
StoppingDistance:距离目标点多远就停止(速度不能太快,加速度不能太小,否则可能会由于到达目标点时速度未降到零而无法正常停止);Area Mask:区域覆盖,当前寻路组件没有覆盖的区域,即使有烘焙显示是可行区域,对当前这个组件来说也是不可行区域;常用做播放死亡动画,不管当前角色在播放什么状态,都可以被杀死然后播放死亡动作;Priority:寻路权重(0-99,值越小优先级越高,优先级低的游戏寻路组件需要绕着他走);Idle(名字不固定):橙色,一般是默认动画,一般播放待机动画;
2025-03-11 20:20:21
766
原创 模型和动作设置+Unity自带寻路系统Navigation
Off Mesh link:当想要游戏物体在寻路导航中能够实现类似爬坡的效果,可以在需要“爬高”的游戏物体下创建两个子物体,在父物体上挂载Off Mesh link组件,设置起点和终点的位置(两个子物体的transfrom,组件设置见下图)有可能是一个完整的动画合集,分动画是根据帧数来分的,这个时候动画设计师需要跟你说具体动作所对应的帧数范围;在剪切动画时,需要检查右侧的灯的颜色;绿色等代表匹配的很好,黄色灯匹配的一般,红色灯代表没有匹配上;Humanoid:新版动画系统人类角色的设置;
2025-02-26 11:23:51
534
原创 2D刚体和2D碰撞体+2D物理效应器+动画系统
Speed:当数据为正时,会有一个x轴正方向的速度;如果为负,会给当前平面上的游戏物体一个x轴负方向的速度;数值的大小也就是模长大小代表力的大小;2.Surface Effector:模仿的是地面,可以是冰面也可以是粘板。ForceSource:力的来源(刚体所在的位置或者是碰撞体所在的位置)需要勾选上BoxCollider的Used by Effector功能;需要勾选上BoxCollider的Used by Effector功能;ForceTarget:力的作用目标(目标刚体的位置或者碰撞体的位置)
2025-02-23 20:12:15
387
原创 图片资源设置+SpriteRenderer
7.Aniso Level:射线机视野和场景角度很小时,是否增强纹理的精细度等级,等级越高,精细度就越高;5.Generate Mipmaps:根据不同距离显示不同分辨率图片,耗费内存;Tiled:填充模式: (TiledMode:连续填充、自适应填充)1.Sprite:存放2D图片资源,2d图片 TextureType必须是Sprite;Input Texture Alpha:自带Alpha资源;ToSmaller:图片分辨率最小尺寸来处理;2.Alpha Sources: alpha通道资源;
2025-02-12 23:04:03
349
原创 刚体的力+射线相关知识点+延迟函数
position:cube0和所给点的连线力得大小,这个力跟移动方向有夹角,会造成cube0旋转;但是out出来一个hit值,这个hit值是我们需要的;物理射线检测:返回值是bool类型,根据返回值只能确定当前射线有没有碰撞到其他碰撞体。注意:当此脚本或者当前脚本所在的游戏物体失活,延迟函数依然会执行;//以cube0自身坐标系来进行移动,比如向前运动,就是向自身的正前方运动;//以世界坐标系为参考系运动,比如向前运动,就是向世界的z轴方向运动;force:给cube0一个力,控制cube0的移动;
2025-02-12 15:15:30
360
原创 以Unity6.0为例,如何在Unity中开启DLSS功能
Unity官方在Unity2021.2版本与DVIDIA合作,将DLSS 技术融入到Unity中,此后的Unity版本一般在HDRP项目中可原生支持DLSS 技术,故此篇文章要求的Unity版本需要Unity2021.2及以上版本,本人用于测试的版本为Unity 6系列版本及Unity2021.3版本。1.使用Streamline SDK,用户可从github下载SDK,用于集成更多的NVIDIA技术(DLSS,Reflex等),将SDK导入Unity后,通过C#脚本调用API,以实现对应的要求。
2025-02-09 21:09:13
1232
原创 划线组件LineRenderer+刚体力的模式
牛顿第二定律:F=ma 动量守恒定律: M1V1=M2V2 动量定理:Ft=mv=Impulse冲量。ForceMode.Impulse:关注的是冲量的整体,也就是m*v的值,这时跟物体的质量相关;ForceMode.Acceleration:关注的是加速度,所以跟物体的质量不相关;ForceMode.Force:关注的是力的整体,也就是m*a的值,这时跟物体的质量相关。ForceMode.VelocityChange:关注的是速度,所以和物体的质量不相关;
2025-01-12 12:22:27
330
原创 Unity打包+摄像机组件
(创建一个新的摄像机,作为渲染当前人物渲染摄像机,当给摄像机Target Texture赋值testTexture时,这个摄像机的Depth就会失效,不会跟其他摄像机进行对比渲染到主屏幕,将当前摄像机拍摄到的内容显示到testTexture上。Clipping Planes: Near/far 渲染最近/最远距离:所需要渲染的游戏物体必须在这个范围内,否则不会被渲染;Projection: Perspective:透视摄像机:一般渲染3D场景或者说是3D摄像机,能渲染出z轴值变化效果;
2025-01-11 18:24:26
503
原创 四元数旋转+四元数和向量相乘+音频相关
Force to momo:强制将多声道音频转换成单声道音频,占用大小会缩小;Load Type: Decompress On Load:以不压缩的形式存在内存,用的时候方便,但是占用内存高;AudioListener:监听声音,一般放在摄像机上,相当于耳朵,一个场景内只能有一个这个组件。Streaming:以流的形式存在内存,使用时现解码。.mp3,OGG:适合较长的音乐片段。.aiff:适用于较短声音片段;.wav:适用于较短声音片段;AudioSource:播放声音的组件,音源。
2024-12-21 20:39:15
426
原创 向量的叉乘+Vector3补充+四元数
反三角函数相关知识: float a = Mathf.Asin(0.5f) * Mathf.Rad2Deg; Debug.Log("a:" + a);运行结果如下:几何角度:两个向量叉乘,得到一个新的向量,新向量跟原始两个向量都垂直,也就是得到由两个向量所确定平面的法向量。数学角度:a(x,y,z) b(i,j,k)a x b=(y*k-z*j,z*i-x*k,x*j-y*i)player.transform.position=Vector3.SmoothDamp(player.transform
2024-12-20 20:23:19
330
原创 坐标系,向量_batch及向量点乘部分知识
2.补全三角形方法:以某一个(a)向量的终点为另外一个向量(b)的起始点,连接(a)向量的起始点到(b)向量的终点,得到的向量就是a向量和b向量的加和。数学方法理解:向量a(6,0,0),向量b(3,0,3) a+b=(6+3,0+0,0+3)=(9,0,3)向量a(x,y,z) 向量b(a,b,c) a-b=(x-a,y-b,z-c)将两个向量起始点移至同一点,连接两个向量的终点,方向为减向量指向被减向量。b向量在a向量方向上投影长度,乘以a向量的模;
2024-12-08 21:13:23
206
原创 PlayerPrefs+碰撞检测+触发器+三角函数——batch
Interpolate:如果刚体抖动,none:没有插值运算;Interpolate:根据上一帧位置做插值运算;Extrapolate:根据上一帧的运动来预测下一帧的插值;Continuous:连续性监测;Constraints: Freeze Position:锁轴位移。Is Kinematic:运动学刚体,当两个刚体发生碰撞,它不会发生位移;1.两个游戏物体发生碰撞,必须有一方有刚体组件,两方都必须有碰撞体组件。碰撞器和触发器:只要两个发生碰撞的物体有一个物体有刚体组件就会触发。
2024-12-03 21:56:34
309
原创 Light灯光组件+组件的相关操作+游戏资源的加载
Shadow Type:影子设置: No Shadow 没有影子 Hard Shadow:硬影子 soft Shadow:柔和影子。Type: Directional:平行光,模仿的是太阳光。cookie: (类似于)灯光上贴的一层纸 size;Draw halo:辉光(个人认为类似于朦胧的月光感)Indirect Multiplier:光照强度乘数。运行结果如下,按G键clone出一个Tank预制体。Mode: RealTime:实时。Intersity: 光照强度。
2024-10-12 21:04:00
585
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人