- 博客(736)
- 资源 (92)
- 收藏
- 关注
原创 给面试网易游戏的技术一些建议
先后在 IBM PlatformComputing从事网格计算,淘米网,网易从事游戏服务器开发,拥有丰富的C++,go等语言开发经验,mysql,mongo,redis等数据库,设计模式和网络库开发经验,对战棋类,回合制,moba类页游,手游有丰富的架构设计和开发经验。
2024-09-04 11:43:30 2708
原创 Unity射击游戏开发教程:(36)敌人关卡生成器的设计和开发
枚举是一个变量,它是一组常量。例如,我们可以使用整数来表示指南针的基本方向。0=北1=东2=南3=西这可能很难记住哪个整数代表哪个方向,并且也可能使阅读代码变得有点困难。枚举 Direction 保存表示罗盘方向的特定值子集我们可以声明一个枚举 Direction 并沿我们的基本方向传递:北、东、南、西。所以现在当我们使用枚举 North 时,它实际上表示 0 或 East 表示 1,并且每次我们都会将常量增加 1。但是,我们还没有完成枚举的设置。现在我们需要创建一个枚举类型的变量。
2024-09-18 14:31:49 3
原创 Unity射击游戏开发教程:(35)轰炸敌人
声明变量对于这个动作,我决定尝试一些不同的东西,并使用协程来控制敌人何时改变方向。我们将使用布尔值来记录何时应该向左或向右移动。在update中,我们使用 if else 语句来检查左移布尔值是 true 还是 false。如果为 true,将使用 Vector3.left 将敌人平移向左移动,如果 bool 为 false,我们将使用 Vector3.right。在每个语句中,我们启动一个协程,将 bool 值切换为 true 或 false。协程。
2024-09-12 13:50:47 204
原创 Unity射击游戏开发教程:(34)增加磁铁效果
在这一个小片段中,我们将介绍如何创建一个 Power Up(提升能量地道具),让玩家能够在不移动的情况下吸引其他 Power Up。获取播放器组件每个 Power Up 都有相同的 Power Up 脚本来控制其直线向下移动和碰撞触发。由于每个Power Up都有这个脚本,我们将在这个脚本中控制磁力运动。因此,我们需要掌握播放器,以便我们可以访问其位置和磁铁能量条。在update中,我们需要创建三个始终需要update的变量。第一个是 Vector2,它将保持 Power Up 的位置。
2024-09-10 10:54:55 157
原创 Unity射击游戏开发教程:(34)让敌人有跟随和瞄准地侵略性
一旦满足该条件,我们将实例化激光预制件,将位置设置为火点的位置,并将旋转设置为火点的旋转。请记住,我们计算了卡农的旋转,并且火点是卡农的子级,因此火点的位置和旋转将与卡农的相同。中创建一个名为 Direction 的局部变量,并从玩家的位置中减去敌人的位置(请记住,设定是敌人的子级,因此它将与敌人具有相同的位置)。让我们为这个敌人创建一个脚本,我们需要获取佳能和火点的句柄,因此我们将声明一个游戏对象,序列化它们,并在检查器中分配这些游戏对象。现在,我们的卡农能够随着玩家的移动而向玩家的方向旋转。
2024-09-09 09:30:06 58
原创 揭秘 YOLO 的强大之处:利用 YOLO 系列模型变革物体检测
物体检测广泛应用于自动驾驶、监控和图像分析等应用,因为它能够提供有关场景中物体的存在和位置的详细信息。然后,我们介绍了 YOLO 模型,详细介绍了其独特的架构、优势以及从 YOLOv1 到最新的 YOLOv9 的演变。我们将首先讨论用于物体检测的传统方法,强调它们的局限性及其带来的挑战。最后,我们将详细介绍 YOLOv8 和 YOLOv9 的架构和功能,展示这些模型如何突破实时物体检测的极限。在后续的文章中,我们将探讨 YOLO 模型的具体应用,例如检测人工编写的思维导图中的节点、边和箭头。
2024-09-04 16:34:54 732
原创 为初学者简单易懂地讲解Transformer的基础知识是什么?
例如,它计算句子中的每个单词与其他单词的关系,并使用该信息来理解上下文。Transformer 可以直接建模句子中每个单词与其他单词的关系,使其能够有效地学习单词之间的依赖关系。因为它通过考虑句子的上下文来学习单词表达,所以它的优点是能够生成更自然的句子。Transformer 的注意力机制使其能够高效捕获句子中相距较远的单词之间的关系,其并行计算能力使其能够高速处理大量数据。通过充分利用自注意力机制,Transformer 可以学习句子中每个单词与其他单词的关系,让您对句子有更深入的理解。
2024-09-03 11:05:47 169
原创 Unity射击游戏开发教程:(33)控制飞机左右移动
在此方法中,我们有一个名为horizontalInput 的变量,它使用左移或右移的Input.GetAxis(水平)返回-1 到1 之间的值。当不向左或向右移动时,该值为 0,当向左移动时,该值增加到 -1,向右移动时,该值增加到 1。这很重要,因为如果该值小于 0,并且移动,我们就知道玩家是否向左移动如果大于 0,则正确。在我使用的动画中,它们只有两帧,因为我们希望飞机倾斜得很快,这样玩家在按下相应按钮时就能直接感觉到转弯。在本文中,我将介绍如何在玩家朝该方向移动时添加向左和向右转动的动画。
2024-08-29 10:15:13 62
原创 Unity射击游戏开发教程:(32)控制子弹射速
显示发射速度从较慢到较快的变化这是一篇关于如何实现射速以防止玩家乱按射击按钮的快速文章。通常做法说到要控制子弹的射速,可以通过以下几种方法:通过设置子弹的发射间隔时间来控制射速。在每次子弹发射后,设置一个时间延迟,确保下一枚子弹不能立即发射。利用计时器来控制发射间隔。可以使用定时器来设置一个固定的时间间隔,在每个时间间隔内发射一枚子弹。根据需求设定射速等级。根据游戏的难度或其他因素,可以设置不同的射速等级,每个等级对应不同的发射间隔时间。根据游戏中的事件触发子弹的发射。
2024-08-26 10:37:50 74
原创 Unity射击游戏开发教程:(31)制造一定追踪行为的敌人
如果为 FALSE,则敌人只能躲避,如果为 TRUE,则敌人只能射击。在本文中,我们将介绍如何在两种敌人行为之间切换。当我们使用 Dodging 方法时,我们将启动一个协程 (StartFiring),它将等待一段时间,然后将 _isFiring 设置为 TRUE。这两个方法会来回反弹,因为这些协程将 _isFiring 变量设置为 ON 和 OFF(TRUE 和 FALSE)。我们需要追踪敌人是否在开火,因为此时我们想要剥夺敌人的闪避能力。这将是一个布尔值,我们将其设置为 FALSE。
2024-08-06 10:28:13 390
原创 golang实现Digest认证鉴权接口
Digest认证鉴权是一种HTTP认证协议,用于验证客户端和服务器之间的身份。它使用了一个特殊的哈希函数来对用户名、密码和其他安全数据进行加密,并生成一个摘要,用于验证客户端的身份。以下是一些Digest认证鉴权的使用场景:Web应用程序:Digest认证鉴权可以用于保护Web应用程序的管理界面或受限资源。用户需要提供正确的用户名和密码才能访问这些资源。API鉴权:Digest认证鉴权可以用于保护API的访问和使用。客户端需要提供正确的密钥和密码才能向API发送请求并获取响应。
2024-08-06 10:26:51 1038
原创 error C2011: “sockaddr_in”:“struct”类型重定义的修改办法
宏的主要作用是减少编译时间和避免命名空间污染。不过你的程序需要使用被排除的API,你则不能定义这个宏,或者需要单独包含那些特定的头文件。简洁的来说,定义以排除加密、DDE、RPC、Shell 和Windows套接字等 API,官方文档在这。#include <cderr.h> // 提供公共对话框错误代码。#include <dde.h> // 动态数据交换(DDE)管理库的定义。#include <ddeml.h> // DDE管理库的高级接口。
2024-07-22 17:01:42 301
原创 Unity射击游戏开发教程:(29)躲避敌人的子弹射击
我们检查激光是否与带有“ShotDetection”标签的游戏对象发生碰撞,如果是,我们需要通过创建局部变量并使用 other.GetComponentInParent 来获取 Enemy4 的句柄,因为 Dodge 方法位于脚本中附加到 Enemy 对象而不是子对象。请记住,_isDodging 仅在 0.3 秒内为 true,然后将其设置为 false,从而阻止敌人的移动。在此协程中,我们将 _isDodging 设置为 true,持续 0.3 秒,然后再将其设置为 false,因为……
2024-07-04 14:06:32 438 1
原创 Unity射击游戏开发教程:(30)如何让玩家追踪敌人
因此,我们使用 _direction 全局变量,该变量总是在更新中重新计算,并将其乘以我们的激光速度变量,该变量只是在 OnStart 之前声明的浮点变量。这是我们将使用rotationZ变量的地方,该变量在该变量上方的行中的每一帧中不断地重新计算。我们希望激光的旋转与敌人当前的旋转相匹配,因为我们已经在计算这一点,所以我们只需要告诉敌人最后使用我们之前使用的四元数欧拉进行旋转。现在我们有了玩家的位置,我们可以找出我们需要面对的方向,我们希望它出现在我们的更新中,因为玩家的位置会不断变化。
2024-06-26 17:35:52 182
原创 redis数据库备份,回档,迁移工具使用
相信很多服务器开发者或者运维同学都遇到过这样的场景,比如我要从阿里云的redis集群把数据迁移到另外一个账号下的或者另外一个云服务商的redis集群,或者单机,或者哨兵模式redis实例,那么这种情况下我推荐给大家一款非常好用的工具,可以无缝的从A集群/单机/哨兵/已有的数据库rdb文件 迁移到 B集群/单机/哨兵模式下的实例中。
2024-06-24 00:15:00 166
原创 【go从入门到精通】rpc和grpc的使用
创建我们例子的第一步是定义一个服务:一个 RPC 服务通过参数和返回类型来指定可以远程调用的方法。gRPC 通过protocol buffers来实现。我们使用 protocol buffers 接口定义语言来定义服务方法,用 protocol buffer 来定义参数和返回类型。客户端和服务端均使用服务定义生成的接口代码。这里有我们服务定义的例子,在api/api.proto 里用 protocol buffers IDL 定义的。
2024-06-18 00:15:00 7362 3
原创 【go从入门到精通】网络编程
接下来,我们需要掌握网络编程,TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网际协议,是一种面向连接(连接导向)的、可靠的、基于字节流的传输层(Transport layer)通信协议,因为是面向连接的协议,数据像水流一样传输,会存在黏包问题。我的意思是,如果我们可以使用特定应用程序(例如 Nginx)的相同 IP: 端口打开一个套接字,我们就可以劫持内核通过该套接字发送给我们的部分请求。包还提供对 UDP 套接字的支持。
2024-06-14 00:15:00 7309 1
原创 微信小游戏推送(小游戏礼包功能)服务器端接入开发经验总结
小游戏开发者的游戏内道具,可通过接入平台「礼包系统」,在微信平台各场景发放游戏礼包。发放场景包括:游戏圈、活动运营工具、发现-游戏-福利中心、广告、搜索等道具礼包发货基于微信小游戏统一的消息推送能力,因此在使用礼包中心的发货回调时,需要开发者服务器处理好消息推送的协议。注意:MP配置消息回调地址只有1个,所有消息推送场景都会使用该通道,所以需要先根据MsgType与Event来判断消息类型,进行相应的处理。下面是发送和返回的格式:更多详情可以查看文档:小游戏礼包 | 微信开放文档。
2024-06-13 11:20:37 15199
原创 Unity射击游戏开发教程:(27)创建带有百分比的状态栏
现在,我们需要一些变量到两个将是需要具有序列化字段属性的 UI,因此我们可以在检查器中分配它们,它们将是一个图像(将是我们的填充图像)和一个文本(这将是我们的弹药)计数文本。需要一个带有 int 参数的公共方法,该参数将作为使用的数量,因此当我们射击或使用推进器时,我们可以从玩家脚本中调用它。我们可以使用状态栏,但我们需要重新填充它,这对于弹药栏和推进器栏来说是不同的,因为推进器栏是再生的。跳转到玩家脚本,因为我们将从那里调用此方法,所以我们需要获取弹药栏的句柄,以便我们可以访问我们创建的方法。
2024-06-12 10:25:30 648
原创 【go从入门到精通】精通并发编程-使用atomic管理状态和同步的无锁技术
Go 中的包sync/atomic提供了低级原子内存操作,确保状态更新以原子方式执行,而不受其他 goroutine 的干扰。在必须以原子方式完成多个进程或需要更复杂类型的同步的情况下,可能需要锁和其他同步技术。在 Go 中,原子计数器允许多个 goroutine 安全地更改共享变量,而无需使用锁或任何其他显式同步,这可确保数据完整性并避免竞争条件。大家从结果上就可以看出这差距不是一点点,当然不是所有的场景都无脑式的使用sync/atomic原子包,那我们接下来看下那些场景不适合。
2024-05-28 15:57:53 694
原创 Unity射击游戏开发教程:(28)敌人被摧毁时掉落的能量提升
然后,我们将通过从生成管理器获取电源数组来实例化电源,并传入随机数,该随机数将确定将创建哪个电源,并在敌人被摧毁的位置创建它,并保持旋转相同使用四元数并将其设置为其身份。例如,百分比机会中的元素 0 = 通电数组中的元素 0(元素 1 = 元素 1,元素 2 = 元素 2,等等)。在 OnTriggerEnter 中,这是敌人被射弹或玩家击中的地方,我们希望在敌人被摧毁之前抓住敌人的当前位置,并将其分配给我们的 powerUpSpawnPosition,这样就知道在哪里可以产生能量我们实例化它。
2024-05-28 15:56:59 246
原创 Unity射击游戏开发教程:(26)创建绕圈跑的效果
角度是我们每帧增加的角度,三角形的斜边(圆的半径)是我们的轨道距离,所以蓝线显示了当前 X 位置添加的内容。当敌人的 Y 位置移动超过停止点(即 2)且 _isMovingDown 为 true 时,我们会将当前的 X 和 Y 坐标存储在相应的变量中,并将 _isMovingDown 设置为 false,这样我们就不再向下移动,这些 X 和 Y 坐标为最终确定。我们创建了一个本地浮点值,它将包含更新时的新 X 位置,并将其设置为等于敌人停止时的 X 位置加上当前角度的 COS x 轨道距离。
2024-05-26 00:30:00 183
原创 Unity射击游戏开发教程:(25)创建具有视差效果的滚动背景
我发现了一些很棒的像素背景,它们是为滚动背景和两者的视差而制作的,因此我能够混合和匹配来制作我的背景。在游戏更新中,我们检查背景图像的位置是否低于该偏移量(背景图像耗尽之前的位置),当低于该偏移量时,我们将其重新定位回起始位置,从而创建无限循环。我们需要找到背景的 Y 位置,即背景耗尽的位置,因此我们抓取父背景图像并将其在 Y 轴上移动,直到背景即将耗尽并记下 Y 位置。我们将创建一个脚本,将背景图像向下移动,然后当它到达 Y 位置时,我们将重新定位回原始位置,以创建这个无尽的滚动背景。
2024-05-25 00:15:00 193
原创 Unity射击游戏开发教程:(24)创造不同的敌人
在这篇文章中,我们将讨论添加一个可以承受多次攻击的新敌人和一些动画来使事情变得栩栩如生。敌人没有任何移动或射击行为。这将有助于增强未来敌人的力量。我们将声明一个 int 来存储敌人可以承受的攻击数量,并将其设置为 3。首先,我们将跳转到 Enemy 脚本并使用 OnTriggerEnter2D 来检测物体何时与 Enemy 发生碰撞。如果标签是激光,我们将在 0.2 秒后摧毁激光,以便在摧毁激光之前给激光击中动画足够的时间播放。接下来,我们将命中计数减 1 并播放敌人命中动画。
2024-05-24 00:15:00 184
原创 【go从入门到精通】精通并发编程-使用扇入扇出提升多个通道之间传递数据的效率
在并发编程领域,Golang 作为一种擅长处理并发的编程语言而脱颖而出。Go 并发模型的一个关键组件是通道,它允许 goroutine 进行通信并同步其工作。在这里,我们将探讨在 Go 中的多个通道之间传递数据的技术。当需要协调不同 goroutine 之间的工作并管理数据流时,这非常有用。了解 Go 通道在我们深入研究在多个通道之间传递数据之前,让我们简要回顾一下 Go 通道是什么以及它们如何工作。大家可以反看我之前的这篇文章:Go 通道是用于 goroutine 之间通信和同步的内置原语。
2024-05-24 00:15:00 175
原创 Unity射击游戏开发教程:(23)Unity 中的跟踪导弹
在我们的游戏更新中,我们需要找到敌人的游戏对象,因此我们可以将其存储在目标变量中。现在我们已经知道了导弹到达敌人的方向,我们希望能够旋转它,使其面向目标。这需要的是当前的 Vector3,它将是transform.up(精灵的顶部),目标 Vector3(存储在我们的方向上,以及希望它在每帧之间移动的距离。如果发生碰撞时标签是“导弹”,我们就知道这是我们的导弹,我们可以输入所有摧毁敌人和导弹的代码。此时,我们有一枚正在工作的跟踪导弹,导弹将向目标旋转并同时向目标移动,但当它击中敌人时,什么也没有发生。
2024-05-23 00:15:00 169
原创 【go从入门到精通】精通并发编程-sync.Map和map
另一方面,如果我们有大量写入工作负载,多个 goroutine 频繁更新数据,我们可能需要使用互斥锁或其他同步机制来确保一次只有一个 goroutine 可以访问数据。提供内置同步,对于读取繁重的工作负载很有用,但它有一些限制,并且比非并发使用的映射慢。通过了解这两种数据结构之间的差异和权衡,我们可以为我们的特定用例选择正确的一种,并优化我们的代码以提高性能和可扩展性。映射是无序键值对的集合,其中键是唯一的,值可以是任何类型。类型是 Go 中的内置类型,它为映射提供了安全且并发的替代方案,并在。
2024-05-23 00:15:00 393
原创 Unity射击游戏开发教程:(22)快速火力提升
一旦玩家开火,我们将开火速率设置为 Time.time 的当前时间加上开火速率,这样它现在必须等待足够的时间才能再次开火。例如,如果玩家在 1 秒开火,则新的开火时间将为 1 + 开火速率,即 0.5。但是,当 Power Up 脚本调用 Rapid Fire Active 方法时,它将将该 bool 设置为 TRUE 并启动等待秒数为 5 秒的协程,这是在 bool 之前玩家可以使用连射的持续时间设置回 FALSE,这会禁用该功能,直到再次收集为止。
2024-05-22 00:15:00 145
原创 【go从入门到精通】精通并发编程-sync.Once
提炼出来的,它使用 `atomic.StoreUint32` 将值设置为 1,表示该函数已被调用,然后使用 `atomic.LoadUint32` 来查看如果需要再次调用。无论有多少个 goroutine 调用它,atomic 包都会以安全的方式执行操作,这使得 `sync.Once` 和 `resync.Once` 是安全的。利用sync.Once,我们确保了只有在第一次调用时生成素数,之后的调用都可以快速获取之前生成好的素数。这样可以避免重复计算相同的素数,提高程序的效率。
2024-05-22 00:15:00 628
原创 【go从入门到精通】精通并发编程-WaitGroup
Go 的 goroutine、通道和互斥体使得开发复杂的并发系统变得很容易。大多数问题都可以使用这三种机制来解决。正如我们前面提到的这篇文章,实际上协程是和很多知识点串起来的 , 并不是孤立的,因此在之前的这篇文章里,我将协程和channel,WaitGroup等知识点进行了综合,这篇文章又拆分来分享给大家。
2024-05-21 00:30:00 464 2
原创 Unity射击游戏开发教程:(21)健康提升
在 Player 脚本中,添加“Increase Health”方法(将其公开,以便我们可以在 Power Up 脚本中调用它),这将处理生命的变化、更新引擎损坏和 UI 管理器。使用 IF ELSE 语句,如果生命值小于最大值 3,我们会将生命值增加 1,其他情况(如果生命值超过 3)我们会将生命值设置回 3,这样就不会超过最大数量。如果我们将 2 条生命移至 3 条生命,我们将关闭左侧引擎的损坏,如果生命从 1 条生命移至 2 条,我们将关闭右侧引擎的损坏。这使伤害动画与生命保持一致。
2024-05-21 00:15:00 215
原创 如何实现比 PyTorch 还要快的置换/转置操作?
与PyTorch相比,在运行时间方面,OneFlow在fp32的情况下至少快3倍,最多可以达到3.2倍。最后一个维度不变,只交换维度1和2,那么我们可以使用更大的访问粒度来读取数据,然后进行Permute操作。以 PyTorch 为例,当数据大小为 128MB 进行 BatchTranspose 时,由于未合并访问内存,实际读取的数据量远大于写入的数据量(7-8 倍)。正如本文和之前关于CUDA优化的文章所示,内核优化有一些常用的方法,例如结合冗余来减少计算次数,调整访问粒度来提高访问效率。
2024-05-20 09:59:22 148
原创 Unity射击游戏开发教程:(20)增加护盾强度
如果它是 2,我们访问 Sprite Render 并将颜色更改为洋红色,如果它是 1,我们将其更改为红色,如果它小于或等于 0,我们关闭 Visualizer 和 Shield Active。因此,如果 ShieldActive 不等于 true,我们会将其设置为 true,设置盾牌强度(决定盾牌可以承受的攻击次数),激活盾牌可视化器并设置盾牌可视化器的颜色。护盾展示器的颜色已经是青色,但由于我们会在受到攻击时更改颜色,因此我们不希望默认为最后一个颜色,因此每次激活时都需要重置。
2024-05-20 09:53:58 123
原创 【go从入门到精通】精通并发编程-Go Mutex 互斥锁
Go 中的互斥锁是什么?编程中的并发性需要保护数据并防止进程之间的冲突。Go 的sync.Mutex 通过控制对共享资源的访问来简化这一过程。在这篇文章中,我们将探索 Go 中的互斥体,了解如何使用它们,并了解它们如何帮助防止冲突。互斥体代表互斥,有助于确保共享内容不被大量 goroutine 同时搞乱。它就像一把钥匙,一次只有一个 goroutine 可以拥有来使用代码的特殊部分。没有它,事情可能会变得混乱并出错。互斥体可以阻止这种情况发生。它们是 Go 标准同步包的一部分。Go 中的互斥锁是什么?
2024-05-17 15:38:46 7649
原创 Unity射击游戏开发教程:(19)控制生命进度条
我们不希望当前的健康状况超过最大健康状况,因此我们使用 If Then 来检查此情况,如果发生这种情况,我们会将当前值设置为最大值。在此游戏对象中,我们将添加到 UI 图像中,这些图像将作为生命值栏的填充和轮廓。回到检查器,我们将脚本附加到健康栏,将填充图像分配给填充变量并将最大值设置为我们想要的值。我们需要初始化的变量是两个整数,分别是生命值“条”的最大值和玩家生命值的当前值。对于每个UI图像,我们只需将之前上传的精灵图像拖到填充图像中,因为它是白色的,所以我们可以将颜色更改为我们想要的任何颜色。
2024-05-17 14:01:55 158
原创 Unity射击游戏开发教程:(18)添加弹药计数+补充弹药
添加简单的弹药计数我将讨论如何向游戏中添加简单的弹药计数。这将包括在 HUD 中添加弹药计数器,当弹药达到 0 时,文本会将颜色更改为红色以提醒玩家。另外,当弹药数为0时,玩家将无法再射击。让我们深入了解吧!在播放器脚本中我们需要添加一些变量。我们将创建两个公共整数,一个是最大弹药,另一个是当前弹药。下一个变量将是一个布尔值,并将跟踪玩家是否有弹药。这将在一开始就设置为 true。在开始时,我们只想确保当前弹药与最大弹药相同。
2024-05-16 00:15:00 9642
原创 【go从入门到精通】精通并发编程-channel
什么是Channel?我们把channel翻译过来叫通道,通道可以被认为是 Goroutine 用来进行通信的管道,可以使用通道从一端发送数据并从另一端接收数据。默认情况下,通信是双向的,这意味着您可以从同一通道发送和接收值,这允许 goroutine 无需显式锁或条件变量即可同步。如果 goroutine 尝试从空通道读取数据,那么它将被阻塞,程序执行将继续等待,直到收到一个值。channel定义Channel可以被定义为全双工、仅传送、仅接收,模式不同。
2024-05-16 00:15:00 8041
原创 Unity射击游戏开发教程:(17)添加推进器推进和推进器推进动画
在当前状态下,当玩家清空 ThrusterBar 时,即使 ThrusterBar 已重新生成,他们也无法再使用 Thruster,因此我需要在 RegenThrusters 协程中添加 ActivateThruster 方法。在 UseThruster 方法中,我们之前使用了 RegenThruster 协程,当调用 UseThruster 方法时,我们需要执行检查以查看 RegenThruster 协程是否正在运行,如果是,我们将停止 RegenThruster 协程,然后再次调用它。
2024-05-15 00:15:00 80
原创 Unity射击游戏开发教程:(15)添加推进器推进和推进器推进动画
现在,当我按住左 Shift 键时,玩家移动得更快,当我释放左 Shift 键时,它会恢复到原始速度。如果 Thrusters(参数)为真,它将从小型推进器转到推进器,如果为假,它将从推进器转换回小型推进器。回到 IF ELSE 状态,如果左 Shift 键按下,我们将提高速度,我们将动画器布尔值设置为 true,以便它触发大推进器动画,当释放左 Shift 键时,布尔值设置为 false 返回动画回到小推进器。当玩家按住 Shift 按钮时,速度会加快,松开 Shift 按钮时,速度会恢复到原来的速度。
2024-05-14 00:15:00 71
原创 【go从入门到精通】使用 pprof 在 Go 中进行分析
当你看到有reflect.unsafe_NewArray的时候,你要小心,这里可能存在一些内存泄露或者不安全的使用方式, 我们可以使用traces reflect.unsafe_NewArray来查看使用的地方都有哪些.越大的盒子总是会对应它的使用情况,无论是CPU、内存等,所以在上面的例子中,我们看到的。通过此基本设置,在运行应用程序时,pprof 将公开您可以与之交互的端点,以开始收集应用程序上的配置文件。命令显示特定函数的配置文件数据摘要,包括其消耗的总 CPU 时间的百分比以及调用的次数。
2024-05-14 00:15:00 371 2
ACM挑战程序设计竞赛C++习题和代码
2024-09-11
Unity射击游戏开发教程的源码
2024-09-09
PL/0 编译器的扩充-实验报告
2024-09-04
BERT: Pre-training of Deep Bidirectional Transformers forLanguag
2024-09-03
车牌识别算法C++项目源码
2024-09-03
QT绘制中秋佳节的月亮阴晴圆缺动画
2024-09-03
国庆特惠-世界国家名称及国旗数据
2024-09-03
分类不锈钢板中的表面缺陷类型数据集
2024-09-02
全国热门旅游景点数据集合excel
2024-09-02
Acm 练习题集合 C语言开发
2024-08-29
Deep Learning From Scratch训练营学习笔记
2024-08-29
图书馆管理系统C++语言
2024-08-29
回合制卡牌战斗游戏服务器架构和业务源码(跨平台,框架和主逻辑C++,登录支付php)
2024-08-22
基于MindX SDK 开发,使用yolo算法来进行目标检测的python代码
2024-08-19
K-means聚类算法
2024-08-19
mxVision-5.0.1打包下载,华为服务器arm环境
2024-08-16
yolov8的入门级(训练+预测)的代码demo
2024-08-14
神经网络学习资料整理从入门到精通
2024-08-14
golang开发使用mongodb统计数据并输出到excel中
2024-08-12
海康ISAPI开发指南-音频产品-广播音频输出
2024-08-12
rollercoaster-dataset过山车数据集下载
2024-08-09
海康音柱服务调用C++工程
2024-08-05
育龄人群备孕胎次与避孕方式数据集
2024-07-25
糖尿病并发症预警数据集
2024-07-25
海康相机算法检测SDK的C++开发项目源码
2024-07-22
aarch64-linux-gnu环境opencv4.5.5交叉编译库
2024-06-06
opencv跨平台编译库
2024-05-31
使Unity开发的游戏支持热更新的解决方案
2024-05-15
2048微信小游戏代码下载
2024-05-15
如何获取车机系统内部的文件和文件夹
2023-11-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人