类人_猿
游戏开发人员,时不时会分享游戏的一些知识,感谢大家支持!
展开
-
Unity的UI适配
最近在做一个新游戏,因为游戏的界面需要宽度铺满屏幕,但是不能用UI锚点的方式,因为距离是固定的,所以需要以一个分辨率的基准去做适配,这样可以保持在等距离的情况下完成所有UI的适配。下面我会说一下锚点的方式以及其他的方式适配供大家参考。原创 2025-03-31 13:50:50 · 196 阅读 · 0 评论 -
Unity中解锁图片像素点,动态闭合轨迹检测
因为最近在研究Mane天蚕变的游戏完整逻辑,研究了两套方案做解锁图片的功能,这里我先讲一下我的这个图片像素点的方案解锁图片,这个逻辑其实很简单就是利用划线检测是否轨迹点闭合,然后闭合的点在映射到图片的像素中即可,当然这里需要制作一个shader就是主图层和遮罩层,因为遮罩层的图是动态生成的,所以这块你的像素越大则性能消耗越多也就会卡顿,所以根据实际情况去考量项目需求。需要的同学们可以去我上面资源下载的位置去下载。原创 2025-03-14 11:37:52 · 361 阅读 · 0 评论 -
Unity自定义区域UI滑动事件
一提到滑动事件联想到有太多的插件了比如EastTouchBundle,今天想单纯通过UI去做一个滑动事件而不是基于Box2d或者Box去做滑动事件。原创 2025-03-07 16:25:20 · 417 阅读 · 0 评论 -
Unity组件TrailRenderer屏幕滑动拖尾
今天要做一个拖动效果,正好用到了TrailRenderer这个组件,正好分享一下。原创 2025-03-07 15:55:22 · 313 阅读 · 0 评论 -
Unity中Stack<T>用法以及删除Stack<GameObject>的方法
因为之前很少使用Stack这个表,然后在做对象池的时候用了一下然后发现我的对象有时候无法删除,然后这里我分享一下Stack的用法和删除方式。原创 2025-03-06 15:00:24 · 455 阅读 · 0 评论 -
升级TTSDK抖音小游戏banner广告接入
我们原来使用的是unity2021,这次为了抖音新出的TTSDK中的新的API升级我们将项目升级为了unity2022,这次抖音官方剔除了原来StartSDKUnityTools和Start Asset Analyser(startmini)这两个部分,这次升级之后广告这块的修改我在做一下记录。如果有不知道原来怎么接入广告的可以看我后面这篇文章。原广告接入文章。原创 2025-02-27 10:51:51 · 508 阅读 · 0 评论 -
Unity报错:InvalidOperationException: Insecure connection not allowed
最近在做抖音小程序的升级(官方换新API),框架的加载部分也就淘汰了我原来使用的抖音提供的StartMini加载打包插件,现在换上了YooAsset,根据教程都搭建完之后运行Webgl版本有一个如下的报错。YooAsset的教程我会放到后面文章去讲。原创 2025-02-27 10:32:49 · 370 阅读 · 0 评论 -
Unity合批处理优化内存序列帧播放动画
这里是针对Unity序列帧动画的优化内容,将多个图片合批处理然后为了降低Unity的内存占用,但是相对的质量也会稍微降低。可自行进行批处理。如果一个图一张的话肯定是会占用太多的内存,所以直接将图片进行合批处理将多个图放到一张上去就会比较节省内存。不知道怎么处理图片的可以去看一下PS图片批处理上面文章中我没有将处理完的图合并到一张上这个比较简单我就不操作了。不知道视频怎么转序列帧的可以看这个视频转序列帧。原创 2025-02-18 17:13:29 · 424 阅读 · 0 评论 -
Unity开发播放视频
原生Unity播放视频VideoPlayer播放视频,这里我没有选择使用插件,还有一个播放视频的插件也可以,这里不过多介绍就说一下原生VideoPlayer的基础用法。原创 2025-02-12 17:13:38 · 465 阅读 · 0 评论 -
Unity世界坐标转成UI坐标
在Unity中官方提供了很多坐标转换的API,但是还没有一个API是将世界坐标系转换成UI的坐标系,世界坐标系在屏幕中的位置是不固定的所以有时候需要转换成UI坐标系**(注意这里不是转换成屏幕坐标,而是UI坐标)**原创 2025-02-12 13:37:34 · 436 阅读 · 0 评论 -
Unity中UGUI的Button动态绑定引用问题
Button动态绑定几个连续的按钮事件时使用for循环的i做按钮的id发现按钮点击对应不上。如下代码上述代码的打印发现每个按钮的点击触发的id都是10,也就是for循环i的最大值。此时按钮的id引用都是i,但是i其实是已经发生了变化从0-10的变化,这里只需要将i开辟一个新的引用即可。代码加入上述的**int id = i;**这样就可以动态绑定不同引用的按钮。这个其实是一个值类型和引用类型的问题,感谢大家的支持!原创 2024-12-26 14:29:45 · 395 阅读 · 0 评论 -
Unity开发抖音小游戏广告部分接入
最近在使用Unity做抖音小游戏这块的内容,因为要接入广告,所以这里我把我接入广告的部分代码和经验分享一下。原创 2024-08-15 15:00:10 · 2446 阅读 · 0 评论 -
Unity音频管理器插件AudioToolKit
最近在自己写音频管理器的时候在网上发现了一款比较好用并且功能很全的一个音频管理插件,叫做AudioToolKit的插件。如果需要的可以直接从我资源中找。Audio Toolkit是一个完整、易于使用且性能优化的框架,用于在Unity中播放和管理音乐和音效。专为AAA级游戏设计并使用。无需任何编码即可设置复杂的声音和音乐行为。脚本中的超简单音频触发:例如AudioController.Play(“MySoundID”);在运行时按音量可调的类别定义音频资产。使用高级选择模式指定替代声音。原创 2024-08-15 14:30:29 · 919 阅读 · 1 评论 -
Unity中对Spine动画播放、暂停、事件处理管理类
最近在做设计spine动画的抖音小程序,正好借此机会分享一下我对Spine动画的管理等相关知识,我们公司使用的是Spine4.0.64开发的动画,Unity使用的是Spine4.0,这里不分享spine的导入等其他操作了,如果想要了解可以看一下我之前的Unity如何使用Spine动画导出的动画文章。上述是我对Spine的一些控制和理解,希望可以帮助到大家。原创 2024-08-14 20:50:43 · 2095 阅读 · 0 评论 -
Unity如何使用Spine动画导出的动画
最近公司在做抖音小程序的小游戏,我们这边动画部分使用的是spine动画,所以会有spine导入的问题,这里我正好说一下我目前使用的spine方式和美术导出的格式。原创 2024-08-14 17:52:35 · 1938 阅读 · 0 评论 -
模拟物理弧线轨道运动(模拟飞盘,子弹运动)
模拟弧线的运动,并且对象始终朝向运动的方向,模拟飞盘子弹的运动轨迹。这里我是没有加重力这么一个概念的,当然了重力其实比较简单可以参考我之前写的模拟抛物线运动里面我模拟了重力。这个轨迹运动是用了弧线的知识,可以上我上述的代码。原创 2024-06-27 15:59:51 · 476 阅读 · 0 评论 -
Unity中模拟抛物线(非Unity物理)
用Unity物理系统去做的抛物线想要控制速度或者想要细微的控制一些情况是非常困难的。所以想要脱离Unity的物理去做一个模拟抛物线的运动,最近在做关于模拟物理抛物线方面的研究。也主要是想要让这个模拟更加有可控性,这样就可以更好的去做游戏中的变化。如上图gif中分别对应了一个start小白球和一个 end小白球分别代表抛物线经过的方向,并且可以通过设置抛出去的高度来管理这条抛物线。原创 2024-06-27 15:09:02 · 1156 阅读 · 0 评论 -
Unity接入PS5手柄和Xbox手柄以及Android平台的(以及不同平台分析)
最近公司的足球手游项目在操作的时候发现操作感不太够,经过大家的讨论之后想要接入手柄的支持(PS5手柄、Xbox手柄、北通手柄)。手柄的操作感还是在手机操作感之上的。这样也可以让有手柄的玩家体验手游。当我接入手柄的时候我发现,编辑器(PC)和手机上的按键是事件是不一样的,这里我下面也做了一个Android的小工具能看出来手柄的事件,也可以在编辑器上查看PC的手柄事件。这里我针对的是老版本的InputSystem,如果使用新版本的InputSystem可以忽略我今天要说的内容。测试手柄的工程和安卓包。原创 2024-06-13 13:35:18 · 1362 阅读 · 0 评论 -
3D模型人物换装系统(五 模型核批之后模型uv不正确)模型UV不正确
最近在公司里给公司做模型优化合批的时候发现了模型的uv在合批之后无法正常展示,这里找了很多的原因,开始以为是模型设置或者是少了贴图或者是贴图大小不正确的问题,后来发现不是,结果是模型师展uv的时候展开的不对,我也是很无语,只能自己下载了Maya去重新展UV。总有不一样的坑会天天踩,只要心态好就没什么大不了。原创 2024-04-20 15:30:52 · 755 阅读 · 0 评论 -
3D模型人物换装系统(四 人物合批的表现(具体优化在哪里))
最近在公司做项目的优化,普通人物不合批的情况下每多一个材质球就多一个Batches(具体看灯光,有灯光则增加的更多),这样说可能有新手不太理解,这里看下面的截图我针对不同情况做个描述讲解。原创 2024-04-20 13:59:31 · 448 阅读 · 0 评论 -
Unity的滑动控制相机跟随和第三人称视角三
之前相机视角讲过了两篇文章了,但是都是自动旋转视角,今天来了新需求,自动视角的时候,人没办法看全场上所有的景象,所以可以自己控制相机的视口方向,说白了就是做一个拖拽事件,再根据拖动的大小来控制相机视口旋转量,这样就完成了相机的可控视口旋转。对比之前自动旋转的,这个版我觉着会更舒服一些,因为这个版的镜头更加可控制一些,但是这个也会让你操作变得复杂,无疑增加了一种操作负担。原创 2024-03-07 11:28:55 · 854 阅读 · 0 评论 -
Unity的相机跟随和第三人称视角二
之前讲过一个第三人称的相机镜头,今天想把原来的镜头改一下。之前测试的时候发现了原来相机的镜头移动是有点问题的,虽然都是平滑的移动但是其实不是环形移动。Unity的相机跟随和第三人称视角一第一篇的相机的移动我下面举个例子大家看一下,这里虽然都是平滑的移动,但是还是有差距的。原创 2024-03-06 14:58:22 · 1526 阅读 · 0 评论 -
求两个向量之间的夹角
求两个向量之间的夹角方法有很多,比如说Unity中的Vector3.Angle,Vector3.SignedAngle等方法,具体在什么情况下使用这个还是得看这几个函数的结果是什么。/// 计算夹角带有正负号/// 计算夹角带有正负号//求出两向量之间的夹角//叉乘求出法线向量//求法线向量与物体上方向向量点乘,结果为1或-1,修正旋转方向上述我提供得这两个方法经过测试也是可行的。第一种方法类似于Unity的原生API第二种GetAngle。原创 2024-02-27 14:36:36 · 1069 阅读 · 0 评论 -
Unity的相机跟随和第三人称视角
最近足球项目的镜头在做改动,观察了一下实况足球的视角,发现他有多种镜头模式,带球时跟随人物进行旋转的第三人称视角,不带球时镜头锁定人和球都能看到的视角,其实还有很多镜头视角,这里我主要选择这两个来讲一下做一个demo。(我这里的demo不会做的很细大概做一个出来,他的镜头很细致细致到旋转多少度才会有反馈,并不是实时旋转反馈的)原创 2024-02-27 13:41:47 · 1026 阅读 · 0 评论 -
Unity BuffSystem buff系统
现在基本做游戏都会需要些buff,之前我也在网上找也看到很多别人写的buff系统,并不是很符合我的心理预期,大部分在网上看到的都是面向过程的而不是面向对象的独立开来的buff,这样每改动一个小地方或者写一个buff基本上就要改动整个框架的部分,这对合作开发来说是比较致命的,就一个人来做的话还问题不大,但是人一单多了一人写几个buff最后就全乱了,今天把我之前写的这套框架发出来,经过验证了,原来的一个项目大概有3000多个buff,能够比较完美的支持下来。这个buff系统架构我放到优快云资源。原创 2024-02-07 17:17:43 · 2441 阅读 · 1 评论 -
Unity接入GVoice腾讯实时语音
最近在做一个实时竞技类游戏,类似于王者荣耀类型的MOBA类实时联网游戏。针对战斗和组队界面需要加入语音的方便大家进行交流,看了几家语音价格也都是参差不齐最后选择的是腾讯的GVoice(价格很低折合费用下来一人一天0.012元),这个也是我们目前用的最合适的。原创 2024-02-05 13:32:54 · 1704 阅读 · 0 评论 -
D8: Type com.huazhuokeji.footballpark.BuildConfig is defined multiple times:
E:\unityProject\GVoice\Temp\gradleOut\launcher\build\intermediates\project_dex_archive\release\out\com\huazhuokeji\footballpark\BuildConfig.dex: D8: Type com.gcloudsdk.gcloudvoice.BuildConfig is defined multiple times: E:\unityProject\GVoice\Temp\gradleOut原创 2024-01-29 17:18:39 · 540 阅读 · 0 评论 -
Unity打包Android,jar文件无法解析的问题
最近在接入语音的SDK时,发现的这个问题.当我默认导入这个插件的时候,插件内部的文件夹(我下面话红框的文件夹)名字原本为GCloudVoice,这时候我默认打包的时候才发现下属红框的两个jar文件是无法解析的。原创 2024-01-29 17:05:57 · 747 阅读 · 0 评论 -
Unity网格篇Mesh(二)
本文接上一遍Unity网格篇Mesh(二)原创 2024-01-05 10:06:40 · 1097 阅读 · 0 评论 -
toluaframework中C#怎么调用Lua的方法以及无GC方法
lua无GC分析,无拆装箱操作原创 2024-01-04 14:35:03 · 820 阅读 · 0 评论 -
关于游戏性能优化的技巧
好久没有在优快云上面写文章了,今天突然看到鬼谷工作室技术负责人分享的关于游戏性能优化的技巧想梳理一下游戏优化这块的理解,这篇文章不会从细节入手,针对的是大部分游戏性能瓶颈期和对优化没有完整概念的开发。优化的方法和手段很多如果我说的不详细的地方欢迎大家评论探讨,感谢。对象池可以重复利用某一些对象,避免重复的创建实例化。比如特效使用对象池,当特效销毁时可以隐藏起来,并添加到对象池中没下次需要创建一样的特效时只需要从对象池中返回特效,并从对象池中移除。下次再使用这个对象池的时候就不需要重新实例化了。对象类别还包原创 2024-01-03 10:25:34 · 1100 阅读 · 0 评论 -
刚体任意可编辑轨迹运动 模拟重力
贝塞尔曲线可编辑运动轨迹运动原创 2024-01-02 10:27:03 · 994 阅读 · 0 评论 -
Unity网格篇Mesh(一)
这时我们创建一个空物体并挂在组件,它将自动同时添加MeshFilter和MeshRenderer组件。并设置网格尺寸为x = 10和 y = 5。一个网格渲染器可以有多个材质球,它通常被用来渲染多组三角面,也成为子网格。它通常在外界导入的模型中使用,本片文章不使用多个材质球。创建一个新的C#脚本并加入水平和垂直尺寸。再视图左上角选择Display Mode,前三个选项分别是Shaded(着色)、Wireframe(线框)和Shaded。这篇教程中我们将利用顶点和三角面创建一个网格。如何创建自己的网格?原创 2024-01-02 10:25:03 · 1421 阅读 · 0 评论 -
Unity-Shader-渲染队列,ZTest,ZWrite
ZTest提供的状态较多。通过上面的实验结果,我们知道,按照从前到后的渲染顺序,首先渲染蓝色物体,蓝色物体深度测试通过,颜色写入缓存,但是关闭了深度写入,蓝色部分的深度缓存值仍然是默认的Max,后面渲染的绿色立方体,进行深度测试仍然会成功,写入颜色缓存,并且写入了深度,因此蓝色立方体没有起到遮挡的作用。这个例子中其他立方体的shader使用默认的渲染方式,绿色的将ZTest设置为Always,也就是说不管怎样,深度测试都通过,将绿色立方体的颜色写入缓存,如果没有其他覆盖了,那么最终的输出就是绿色的了。原创 2024-01-02 10:22:39 · 1475 阅读 · 0 评论 -
Unity Shader UVLightReveal (紫外线显示,验钞效果)
Component Mask掩码根据输入的格式来定GBRA 或者 XYZWNormalize 单位向量化Dot 向量A * 向量BIf[Community]判断A、B值传出值Difference Threshold为颜色存在的最大差值Color to Be Filtered指定的方向灯的颜色。原创 2023-12-28 20:46:07 · 1094 阅读 · 0 评论 -
3D动态路障生成
上一篇文章介绍了Mathf.Lerp的底层实现原理,这里介绍一下跑酷类游戏的动态路障生成是如何实现的。动态路障其实比较好生成,但是难点在哪里,如果都是平面或者都是没有转弯的话还是比较好实现的,如果动态路障的实现遇到了有上坡下坡或者有转弯的地方我们如何去处理这些拐角点和上下坡的旋转和位置呢?本片文章主要讲解Mathf.Lerp()的用法,如果有不明白的可以看我上一篇文章。原创 2023-12-28 20:39:50 · 1247 阅读 · 0 评论 -
深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第六节 理解垃圾回收GC,提搞程序性能
虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC)。另外,了解内存管理可以帮助我们理解在每一个程序中定义的每一个变量是怎样工作的。这一节我们将介绍垃圾回收机制GC以及一些提搞程序性能的技巧。一些良好的操作可以提高程序的性能:1.清理。不要打开资源而不关闭它。关闭所有你打开的连接。尽可能快的清理所有非托管资源。一般规则:使用非托管对象,初始化越晚越好,清理越早越好。2.不要过度引用。合理使用引用对象。原创 2023-12-27 10:05:29 · 575 阅读 · 0 评论 -
深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复
虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC)。另外,了解内存管理可以帮助我们理解在每一个程序中定义的每一个变量是怎样工作的。这一节我们将介绍引用类型变量在堆中存储时会产生的问题,同时介绍怎么样使用克隆接口ICloneable去修复这种问题。在实际工作中,当我们需要复制引用类型变量时,我们最好让它实现ICloneable接口。这样可以让引用类型模仿值类型的使用,从而防止意外的错误产生。原创 2023-12-27 10:04:48 · 520 阅读 · 0 评论 -
深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 2
虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC)。另外,了解内存管理可以帮助我们理解在每一个程序中定义的每一个变量是怎样工作的。继续上篇未完成的“参数传递对堆栈的影响”。我们已经演示了参数传递是怎么在内在中处理的。在接下来的文章里,存储在栈中的引用变量会产生什么情况以及怎么解决对象复制带来的问题。原创 2023-12-27 10:04:15 · 467 阅读 · 0 评论 -
深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第四节 参数传递对堆栈的影响 1
虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC)。另外,了解内存管理可以帮助我们理解在每一个程序中定义的每一个变量是怎样工作的。这篇文章我们将介绍一些方法参数传递行为在堆与栈中的影响。前几节我们介绍了堆与栈的基本工作原理,程序执行时值类型与引用类型在堆栈中的存储。另外,我们已经介绍了一些关于指针的基本知识。这一节中参数传递对堆栈的影响很重要,下面会慢慢道来。原创 2023-12-27 10:03:39 · 502 阅读 · 0 评论