自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Unity中你必须知道的12个2D动画原理

本文来自Svetlana Khlystova,MY.GAMES 的动画师。在这篇文章中,我将解释如何在现代 2D 游戏中使用经典的 12 个动画原理。我们还将讨论如何使用 Unity 工具来处理这些原理。

2024-07-03 09:15:00 2948 1

原创 想要Unity项目丝滑流畅,千万别这么做了

以下操作每秒发生 60-90 次!实际上,这取决于你设备的性能,所以范围可能会变化。Unity 生命周期Unity 生命周期图***Unity 生命周期***当我们谈论性能时,我们指的是这个过程以及完成这个过程需要多长时间。

2024-07-03 08:00:00 2798

原创 一个能让渲染性能提高100倍的办法

GPU 光线追踪是当今的热门话题,所以让我们来谈谈它!今天我们将光线追踪一个单个球体。使用片段着色器。是的,我知道。并不特别花哨。你可以在Shadertoy 上搜索并获得数百个示例甚至已经有一些很棒的教程教你如何做球体Imposter这就是我们要做的。那么我为什么要写另一篇关于它的文章呢?它甚至不是正确类型的 GPU 光线追踪!好吧,因为光线追踪部分并不是我真正要关注的部分。这篇文章更多的是关于如何在 Unity 中将不透明的光线追踪或光线行进物体注入到光栅化场景中。

2024-07-02 18:27:11 784

原创 C# new关键字的三种用法

如果引用是BaseClass类型,即使它实际上指向的是DerivedClass的实例,调用的仍然是BaseClass的Method。:当在派生类中重新定义了一个从基类继承的成员时(即使签名完全相同),可以使用new关键字来明确表示这不是要实现多态性,而是要隐藏基类的成员。例如:​​​​​​​。例如:​​​​​​​。关键字在C#中的灵活性,既可用于对象创建,也可用于实现特定的面向对象设计模式,以及增强泛型的实用性。:这是最常见的用法,用于在堆上分配内存并初始化一个类的新实例。:在泛型声明中,可以使用。

2024-07-02 18:25:59 903

原创 Unity中如何自动化回归测试

在IT行业中,有一种偏见认为测试人员的工作既枯燥又单调。我们对此表示不同意。在我们看来,QA既是一项创造性的工作,也是一项技术性的工作,它提供了一系列的研究机会。此外,要做好这项工作,你需要全身心投入,理解其中的所有细微之处和复杂性,并具备意识和能力来应对任何潜在的陷阱。

2024-07-02 08:30:00 1416

原创 【收藏】Unity异步编程完全指南

本文将探讨 Unity 中异步编程的主要方式:讨论优缺点,展示代码示例,并展示每个方法的实际应用场景。对于新手来说,这是一份绝佳的入门指南,对于经验丰富的工程师来说,它也是一份可靠的资源!游戏开发中的一些任务不是同步的,而是异步的。这意味着它们不是在游戏代码中线性执行的。一些异步任务可能需要相当长的时间才能完成,而另一些则与密集计算相关。一些最常见的异步游戏任务如下:执行网络请求加载场景、资源和其他资产读取和写入文件人工智能决策长动画序列处理大量数据路径查找。

2024-07-01 08:00:00 2460

原创 Unity史上最牛Bug——随机丢失你的金主玩家

至关重要的是,如果你没有模式或外部数据布局描述,那么字节块,就像上面的字节字符串,可能是一个子 ASN.1 结构,也可能只是一个包含某些字符串的叶节点。所以,我的理论是,我们看到的是一个无限循环,其中某种树结构正在被解析但没有完成,而各种各样的调用堆栈恰好显示了操作系统杀死我们的应用程序的位置。对于数据,我们将玩家的匿名收据保存到 Google BigQuery 表中,因此我运行了一个查询,查看了我们实际 iOS 玩家应用内购买的一小部分收据。因此,在一个星期四下午,我要求与他们的程序员会面。

2024-06-30 09:00:00 798

原创 别再这么用Unity的OnTriggerEnter了

在 Unity 中,通常使用“标签”属性来确定游戏对象的碰撞和交互。但是,在某些情况下,这可能并不适合,你可能希望使代码更灵活和通用。在本文中,我将讨论如何在不使用标签的情况下使用 OnTriggerEnter 方法,以及为什么不应该使用标签。

2024-06-30 08:30:00 545

原创 千万别再用单例了!!!Unity C# 中的单例模式替代方案

简而言之,单例模式是指一个类,它只允许在任何时候存在一个实例,并且可以被任何其他类静态地访问。它的目的是解决在项目中查找和访问单实例类的难题。

2024-06-30 08:00:00 1249

原创 它是Shader里最酷的

点积是着色器中最重要、用途最广泛的函数之一。你可能已经了解并使用它了——但如果你还没有…读完这篇文章后你就会。现在你可能迫不及待地想看看我打算如何支持标题中的论点。用例子!我的目标是尽可能多地收集这种神奇数学在材质中的不同应用。我会向你展示一些众所周知的用法、隐藏在其他事物中的用法,以及一些鲜为人知的用法。我希望不会让你失望,并且至少有一个技巧是你不知道的。在所有示例中,我使用虚幻引擎及其材质编辑器,但当然,你可以将这些示例中的任何一个都转移到任何引擎中。很抱歉,但我们将从每个人都应该知道的事情开始。

2024-06-30 08:00:00 939

原创 如何将Unity嵌入Flutter

想要为你的用户创建沉浸式体验吗?你是否遇到过某些设备不支持 ARCore 等传统 AR 库的问题?如果是这样,这篇文章就是为你准备的!在这篇文章中,我将分享我使用 Flutter 和 Unity 创建增强现实应用程序的经验。我遇到了目标设备不满足 ARCore 最低要求的挑战,这阻止了表面检测和与虚拟对象的交互。

2024-06-29 08:15:00 1150

原创 别造轮子:Unity的动画系统还能这么用!

有限状态机可用于管理对象的生命周期人们要么在代码中编写自己的状态机,要么从资产商店购买第三方插件。但你也可以重新利用 Unity Animator。动画器附带内置的可视化、工具、转换和熟悉的 API。想了解更多游戏开发知识,可以扫描下方二维码,免费领取游戏开发4天训练营课程。

2024-06-29 08:00:00 1061

原创 Unity新输入系统好用么?

在 2D 游戏中,使用 Unity 中的新输入系统为我们的玩家设置水平移动。

2024-06-28 08:45:00 1083

原创 小心!在Unity中这么用async和await有问题

Task 异步编程 (TAP) 系统是一个强大的异步编程范式。但是,使用它会导致 Unity 中出现线程问题。在 Unity 中,从主线程调用的异步方法将在主线程上完全运行。拥有异步方法并不会使你的代码多线程化!在使用的方法时要小心。它们默认情况下不会使用 Unity 的同步上下文,并且不提供相同的保证(你可能会最终在其他线程上执行代码!那async如何才能在新线程中执行呢?有很多种办法,可以手动修改SynchronizationContext,不过更简单的是使用UniTask。

2024-06-28 08:30:00 967

原创 8个Unity开发高手都在用的秘密技巧!

如果你使用的是Unity,你可以参考官方的C#语法(http://www.dofactory.com/reference/csharp-coding-standards) 或创建你自己的语法,只要你的团队成员都遵守它!它可以回答你关于引擎组件的大多数问题,让你访问API文档,帮助你确定特定的语法,最重要的是,它可以帮助你用语言描述你遇到的问题。即使是独自工作,版本控制工具也能让你轻松备份你的工作,拥有某种程度的回滚功能,并且可以分支你的项目进行实验,而不必担心丢失你的进度。

2024-06-27 18:30:20 1268

原创 C# OpenCvSharp 入门

C# OpenCvSharp 是一个基于OpenCV(开源计算机视觉库)的C#封装库,它提供了一组功能强大的工具和函数,用于图像处理、计算机视觉和计算机图形学等领域。通过使用OpenCvSharp库,您可以在C#应用程序中轻松地实现各种图像处理和计算机视觉任务。

2024-06-27 18:28:45 814

原创 MySQL中的12个良好SQL编写习惯

执行 Update 和 Delete 语句时必须指定 Where 条件,是为了精确地定位并更改或删除数据库中指定的数据行,避免无差别地更改或删除所有数据,从而防止数据丢失或损坏,保证操作的准确性和安全性。这样可以提高操作的执行效率,减少资源的消耗,提高操作的性能和效率。兼容性:UTF8MB4 是 UTF8 的超集,它向下兼容 UTF8,意味着使用 UTF8MB4 不会影响原有的 UTF8 数据,同时还能支持 4 字节的 Unicode 字符,确保了数据的完整性和广泛适用性。

2024-06-26 11:53:15 1056

原创 C# 任务调度 c# TaskScheduler

在C#中,TaskScheduler是一种非常有用的功能,它允许您在指定的时间或间隔内执行任务。TaskScheduler是一个抽象类,它提供了一个通用的方法来计划和执行任务。您可以使用TaskScheduler来调度多个任务,并且在多线程环境中控制它们的执行。我们已经创建了一个自定义的任务调度器 MyScheduler,可以执行预定的任务。在这个例子中,我们将在5秒后开始执行任务,并且每隔3秒重复执行一次。写一个继承TaskScheduler的类。在界面中定时调用​​​​​​​。

2024-06-26 11:52:45 865

原创 10 种最佳编程字体

微软的旧版Consolas (https://learn.microsoft.com/en-us/typography/font-list/consolas)字体也是不错的选择。但它是专有的,但可以在 Windows 上使用,快速搜索即可在字体制作网站上找到类似的选项。下载地址:https://github.com/source-foundry/Hack。

2024-06-25 19:35:52 5611

原创 技术人员必不可少的技能之sql优化

在实际的业务场景中,我们可能只需要1、2列就可以,*是查询出所有的列,这样白白浪费了数据库资源,增加了服务器内存或者cpu的使用,此外查询出来的数据,通过网络IO传输的过程中,也会增加数据传输的时间,还有比较重要的一点,select *不会走覆盖索引,会出现大量的回表操作,从而导致查询效率低下。而且在代码中循环调用数据库一般是不允许的。此时的业务场景更合适用 in 关键字,因为如果sql语句中包含in关键字,则会优先执行in里面的子查询然后在执行in外面的语句,此时in 子查询数据量很小,查询速度会很快。

2024-06-25 19:29:39 642

原创 架构师必知的11种API性能优化方法

上面这个例子中,发站内通知和用户操作日志功能,对实时性要求不高,即使晚点写库,用户无非是晚点收到站内通知,或者运营晚点看到用户操作日志,对业务影响不大,所以完全可以异步处理。但是,如果一次性查询的用户数量太多,例如一次查询2000个用户的数据,传入2000个用户的ID进行远程调用时,用户查询接口经常会出现超时的情况。这种情况下,接口的一次请求会涉及到非常长的调用链路。当系统发展到一定阶段,用户并发量增加,会有大量的数据库请求,这不仅需要占用大量的数据库连接,还会带来磁盘IO的性能瓶颈问题。

2024-06-24 18:04:15 1058

原创 C# SerialPort串口通讯

创建C#串口通信程序之命名空间 System.IO.Ports命名空间中最重用的是SerialPort 类。创建C#串口通信程序之创建SerialPort 对象 通过创建SerialPort 对象,我们可以在程序中控制串口通信的全过程。在.NET平台下创建C#串口通信程序,.NET 2.0提供了串口通信的功能,其命名空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。Nuget 安装System.IO.Ports。串口读​​​​​​​。

2024-06-23 11:15:00 1467

原创 SpringBoot 快速实现 api 加密!

所以在实际应用中,要根据情况使用,也可以同时使用加密和签名,比如A和B都有一套自己的公钥和私钥,当A要给B发送消息时,先用B的公钥对消息加密,再对加密的消息使用A的私钥加签名,达到既不泄露也不被篡改,更能保证消息的安全性。在这个过程中,只有2次传递过程,第一次是A传递加签的消息和消息本身给B,第二次是B获取A的公钥,即使都被敌方截获,也没有危险性,因为只有A的私钥才能对消息进行签名,即使知道了消息内容,也无法伪造带签名的回复给B,防止了消息内容的篡改。A接收到B加密的消息,利用A自己的私钥对消息进行解密。

2024-06-23 08:00:00 655

原创 SQL高级知识:存储过程

注意:存储过程在创建阶段可以带参数或不带参数,不带参数的一般是执行一些不需要传递参数的语句就可以完成的功能,带参数那就是需要传递参数的SQL语句,就像上面的示例,传递了两个参数给SQL语句。存储过程是预编译的,在首次运行一个存储过程时,查询优化器对其进行分析、优化,并给出最终被存在系统表中的存储计划,这样,在执行过程时便可节省此开销。如果需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新调用,等等,这时候估计会比较繁琐了。

2024-06-22 08:45:00 547

转载 嵌入式中的一种面向对象思维的架构

在学习实时操作系统的过程中,发现实时操作系统框架与个人的业务代码之间的耦合性就非常低,都是只需要将业务代码通过一定的接口函数注册好后就交给操作系统托管了,十分方便。由以上例子可见,这个框架使用十分方便,甚至可以完全不知道其原理,仅仅通过几个简单的接口就可以迅速创建任务并加入到时间片轮询的框架中,十分好用。其实该部分主要使用了面向对象的思维,使用结构体作为对象,并使用结构体指针作为参数传递,这样作可以节省资源,并且有着极高的运行效率。到此,一个全新的,完全解耦的,十分方便易用时间片轮询框架完成。

2024-06-22 08:00:00 268

原创 2024年C#优秀实用的类库推荐

C# 中流畅的界面模式允许像自然语言一样进行方法链接,使代码更加直观和富有表现力。此模式在 .NET 生态系统中很普遍,它增强了 API 在各种库和框架中的可用性。从配置数据库映射和验证数据到编写单元测试和定义迁移,Fluent Interfaces 可简化开发、减少错误并提高工作效率。在这篇文章中,我将讨论如何在 C# 中使用 Fluent 接口,并通过实际示例来说明它们的好处。

2024-06-21 08:30:00 1336

原创 快速学会一个算法,Transformer

批量标准化是对一个批次中的所有样本进行标准化处理,它是对一个批次中的所有样本的每一个特征进行归一化。而层标准化是对每个样本的所有特征进行标准化处理,独立于同一批次中的其他样本。层标准化的优点是不受批量大小的影响,可以在小批量甚至单个样本上工作。更适合序列数据。

2024-06-21 08:30:00 742

原创 嵌入式中常用的参数存储方案

一些常见的软件管理方案如下,这些方案都有其适用的场景,根据存储介质的特点和具体应用场景进行权衡,在使用过程中需要灵活使用,甚至可以配合使用。参数能通过硬件进行存储后,还需要进行软件的管理,比如参数读取、参数写入、参数备份、参数重置、参数更新等软件功能。云存储是一种通过互联网将数据存储在远程服务器上的方法,适用于需要大容量和易于共享的场景。一些常见的参数存储方案如下,每种存储方案在不同的智能硬件产品中都有其独特的应用场景,EEPROM 是一种容量较小的存储器,在产品中需要外挂一片 EEPROM,适用于存储。

2024-06-21 08:00:00 1312

原创 全面解析:C# 委托的实质性应用与优势

有人问C#的委托(Delegate)有什么实质性用途?委托在C#其实是无处不在,那么它具体用在那里呢?。本文将从委托(Delegate)定义和演变讲起,让大家一目了然。C#的委托(Delegate)是强类型的函数指针,用于引用方法并允许将方法作为参数传递。随着C#的演变,委托的功能和用途变得越来越强大和灵活。本文将从C#委托的演变谈起,详细介绍其实质性用途,并通过代码实例加以证明。委托的演变C# 1.0: 基本委托在C# 1.0中,引入了基本的委托概念,使得方法可以作为对象传递。

2024-06-20 18:08:51 1280

原创 项目中选择Entity Framework Core还是Dapper?

使用 .NET 开发的应用程序可以根据其使用的对象关系映射器 (ORM) 将其分类为“坏”或“好”。因为选择正确的对象关系映射器 (ORM) 会显著影响应用程序的性能、可维护性和可伸缩性。目前,Entity Framework Core (EF Core) 和 Dapper 是 .NET 开发人员中最受欢迎的两个选择。在本文中,我将讨论这两个 ORM 之间的区别,以帮助您为下一个项目做出明智的决定。

2024-06-20 08:00:00 985

原创 最新.NET 8 中的 .NET Core 配置使用方法

NET 中的配置是指控制应用程序行为的设置。这些设置可以包括重试时间、队列长度、功能标志和机密(如连接字符串)等值。传统上,配置是在编译时应用的,但现代 .NET 允许动态运行时配置,从而增强了灵活性和功能。

2024-06-19 11:15:00 2085

原创 .NET中用于重复数据删除的Redis

dedupe重复数据删除通常称为 dedupe,是消除重复数据的重复副本的过程。这种技术可确保只保留一个唯一的数据实例,同时用指向原始数据的引用来替换冗余副本。重复数据删除的主要目标是减少所需的存储量,优化数据处理工作流程。使用 REDIS 和 .NET 进行重复数据消除 - 图片来源:作者创建。

2024-06-19 10:00:00 911

原创 C#语言中的Async/await最佳实践

如果未使用 ConfigureAwait(false) 方法标记 await 语句,它将调用相同的 UI 线程或工作线程(导致 await 语句的线程)以在 await 之后执行下一组指令。这将告诉编译器使用 threadpool 中的任何线程在 await 关键字之后执行语句,而不是特别调用 await 语句的线程。:它增加了使用 async/await 关键字的额外复杂性。4. 避免返回 await:如果中介类方法只是返回 await 方法,请不要用 async/await 标记它们。

2024-06-18 08:30:00 948

原创 C#/.Net 中的多线程介绍和最佳实践

I/ 引言计算机中的线程 CPU调度程序和时间切片进程和线程并发和并行性异步与多线程在 C 中使用多线程的好处#

2024-06-18 08:00:00 1489

原创 .NET C#基础:布尔表达式

编程中的表达式将值、运算符和方法组合在一起以生成单个结果。在 C# 中,表达式用于语句(如“if”语句)中,以根据 OR 结果做出决策。返回 或 的布尔表达式对于指导代码执行和确定要运行的代码块至关重要。开发人员在布尔表达式中选择等运算符来比较值并根据特定条件和逻辑指导程序流。

2024-06-17 15:45:07 932

原创 .NET C#基础:While & do-while

只要指定的布尔表达式保持 true,do-while 语句就会运行语句或语句块。由于此表达式在每次循环执行后计算,因此 do-while 循环至少执行一次。

2024-06-17 15:43:37 622

原创 C#应用程序与数据库的集成几种方法

应用程序集成数据库是许多软件项目的关键方面。无论构建的是Web应用程序、桌面应用程序还是移动应用程序,高效无缝地与数据库集成,对于存储、检索和操作数据都至关重要。本文将介绍数据库与C#应用程序集成的几种方法与使用注意事项。1、ADO.NETADO.NET 是NET框架中,用于访问关系数据库中数据的组件。它提供了一套丰富的功能,可直接使用 SQL 命令处理数据库交互。它提供了对数据库交互的低级控制,可能很冗长并且容易出错。

2024-06-16 09:30:00 581 1

原创 .net C# 13中你应该知道的新增功能

C#(发音为“C sharp”)是由Microsoft开发的一种通用的面向对象的编程语言。它广泛用于构建各种类型的软件应用程序,从桌面应用程序到 Web 服务、游戏和移动应用程序。C# 是 .NET 框架的一部分,它为开发人员提供了一组丰富的库和工具。C# 最初于 2000 年推出,此后经历了多个版本的发展,每次迭代都引入了新功能和改进。它与 C 和 C++ 等语言有相似之处,但它也融合了 Java 等语言的概念。

2024-06-16 09:30:00 1234

原创 在C#中对 JSON进行序列化和反序列化处理

概述:在现代软件开发领域,不同系统和平台之间的数据交换是不可或缺的方面。JSON(JavaScript 对象表示法)因其轻量级、人类可读和易于解析的特性而成为一种无处不在的数据格式。使用 C# 🚀编程的 JSON 序列化和反序列化在 C# 编程的上下文中,执行 JSON 序列化和反序列化是在应用程序、Web Service 和数据库之间交换数据的常见任务。序列化是指将对象转换为适合传输或存储的格式(如JSON)的过程,而反序列化则涉及从序列化形式重建对象的反向过程。

2024-06-15 09:30:00 1911

原创 SQL高级知识:递归查询

3、迭代公式利用上一次查询返回的结果集执行特定的查询,直到CTE返回NULL或达到最大的迭代次数,默认值是32。在查询语句中调用中CTE,而查询语句就是CTE的组成部分,即 “自己调用自己”,这就是递归的真谛所在。第二个查询被称为递归成员,使该查询称为递归成员的是对CTE名称的递归引用是触发。递归查询没有显式的递归终止条件,只有当第二个递归查询返回空结果集或是超出了递归次数的最大限制时才停止递归。所谓迭代,是指每一次递归都要调用上一次查询的结果集,UNION ALL是指每次都把结果集并在一起。

2024-06-14 08:00:00 623

空空如也

空空如也

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

TA关注的人

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