- 博客(37)
- 收藏
- 关注
原创 C#字符串相关知识
字符串在C#中看似简单,实则涉及不可变性、驻留机制、编码格式等核心概念。在Unity开发中滥用字符串操作可能引发GC压力、内存碎片等问题。本文将介绍字符串的基本使用方式以及梳理字符串常量池(string.Intern)与字符串拼接优化(StringBuilder),探讨Span<T>等新特性对字符串处理的革新。
2025-12-14 12:19:57
910
原创 Unity Addressables
在Unity游戏开发中,资源管理是一个至关重要的环节。传统的资源管理方式,如直接引用、Resources文件夹管理和AssetBundle管理,都存在一定的局限性。直接引用虽然简单快捷,但无法实现动态加载;Resources文件夹下的所有文件都会被打包到安装包中,无论资源是否被使用,这会导致安装包体积过大,且无法进行热更新;而AssetBundle虽然支持热更新,但管理难度较大。
2024-12-18 08:00:00
2436
原创 Unity Hotfix(热补丁)
在Unity游戏开发中,热补丁(Hotfix)技术扮演着至关重要的角色。随着游戏版本的迭代和更新,开发者们常常会遇到一些在发布后才发现的bug或需要紧急修复的问题。传统的修复方式往往需要重新发布游戏版本,这不仅耗时长,还可能对用户体验造成不良影响。而热补丁技术的出现,为这些问题提供了一种快速、灵活的解决方案。热补丁,通俗理解就是将C#中的方法替换成Lua等脚本语言中的函数来执行。在Unity中,通过XLua等插件,开发者可以轻松地实现这一功能。
2024-12-16 08:00:00
2042
原创 Unity Lua调用C#
在Unity项目中,通过Lua调用C#代码,我们可以充分利用C#在性能优化、系统级操作和Unity API访问方面的优势,同时借助Lua的灵活性和动态性,实现更加丰富的游戏逻辑。这种结合不仅提高了开发效率,还增强了游戏的可扩展性和可维护性。
2024-12-09 19:24:36
1210
原创 Unity C#调用Lua
在现代游戏开发中,游戏逻辑的灵活性和可扩展性变得越来越重要。Unity作为一款强大的游戏引擎,支持多种编程语言,其中C#是其主要脚本语言。然而,有时候我们需要在游戏中实现一些动态的行为或者逻辑,这时候Lua脚本语言就显得尤为重要。Lua是一种轻量级、嵌入式脚本语言,它设计简洁、易于学习,并且执行效率高。Lua的灵活性和动态特性使其成为游戏开发中处理游戏逻辑、配置和数据驱动行为的首选脚本语言。动态逻辑:在游戏运行时动态加载和执行脚本逻辑。热更新:无需重新发布游戏即可更新游戏内容或修复bug。扩展功能。
2024-12-09 08:00:00
1280
原创 Unity AssetBundles(AB包)
在现代游戏开发中,资源管理是一项至关重要的任务。随着游戏内容的日益丰富和复杂,如何高效地加载、管理和卸载游戏资源成为了开发者们必须面对的挑战。Unity,作为一款广泛使用的游戏引擎,提供了一套强大的资源管理方案——AssetBundles(简称AB包)。
2024-12-03 18:23:52
1036
原创 C#异步编程
在同步编程模型中,任务按照顺序依次执行,当前任务完成后才会开始下一个任务。这种模式在简单应用中可能表现良好,但在处理需要等待外部资源(如网络响应)的任务时,会导致线程阻塞,从而降低应用程序的响应性和吞吐量。异步编程通过允许任务在等待外部资源时释放线程,使得这些线程可以处理其他任务,从而提高了资源的利用率和应用程序的响应速度。在C#中,异步编程模式支持开发者编写非阻塞代码,使应用程序能够更高效地处理并发任务。
2024-11-12 08:30:00
1142
原创 C#Task任务类
1.Task类是基于Thread的封装2.Task类可以有返回值,Thread没有返回值3.Task类可以执行后续操作,Thread没有这个功能4.Task可以更加方便的取消任务,Thread相对更加单一5.Task具备ThreadPool线程池的优点,更节约性能。
2024-11-12 08:00:00
2096
原创 Unity中ScriptableObject的使用
ScriptableObject在Unity中具有重要的作用和广泛的应用前景。通过合理使用ScriptableObject,开发者可以更有效地管理游戏数据、提高开发效率、优化游戏性能并增强游戏的可扩展性。1.继承ScriptableObject类2.在该类中声明成员(变量、方法等)注意:声明后,我们边可以在Inspector窗口中看到变化我们可以在其中进行设置,但是这些设置都是默认数据,并没有真正使用他们这些关联信息都是通过脚本文件对应的Unity配置文件meta进行记录的。
2024-11-11 08:00:00
2766
原创 .Net相关知识
微软的 .Net既不是编程语言也不是框架!而是类似于 互联网时代、次时代、21世纪、信息时代之类的宣传口号。它是一整套技术体系的统称,或者说它是微软提供的技术平台的代号。包含的内容有框架体系:.Net Framework、.Net Core、Mono等等开发语言:C#、VB、F#等等(C#是.Net平台主推的开发语言)开发工具:Visual Studio、Visual Studio Code 等等可以简单理解.Net本质上就是微软为自己的一系列产品取的一个代号微软做.Net平台的目的。
2024-11-10 08:00:00
975
原创 Unity网络通信(part8.客户端主动断连与心跳消息)
在Unity网络编程中,当客户端主动断开连接时,仅仅调用Shutdown和Close方法确实可能不足以让服务器端立即得知客户端已经断开。这是因为TCP协议本身的一些特性导致的。TCP协议是面向连接的、可靠的传输层协议,它不会立即通知对方连接已经断开,而是会等待一段时间(通常是TCP连接的超时时间)以确认是否有未发送完毕的数据或者是否有必要进行重传。让服务器端收到该消息就知道是客户端想要主动断开然后服务器端处理释放socket相关工作。
2024-11-09 08:30:00
943
原创 Unity网络通信(part7.分包和黏包)
分包是指一个完整的消息在发送过程中被拆分成了多个消息包进行发送。例如,原本的一个字节数组B,被分成了两段(或更多),如字节数组B1和字节数组B2。添加消息头部为每个消息添加头部信息,头部中记录该消息的长度。当接收到消息时,首先读取头部信息,根据头部中记录的长度来判断消息是否完整,以及是否出现了分包或黏包的情况。消息处理逻辑在接收消息时,需要维护一个缓存区,用于存储接收到的字节数据。每次接收到新的字节数据时,将其追加到缓存区中。
2024-11-09 08:00:00
1388
原创 C#中日期和时间的处理
在游戏开发中,合理使用DateTime和TimeSpan结构体可以高效地处理各种日期和时间需求。了解它们的初始化、属性和方法,以及它们之间的关系和转换,是掌握C#中日期和时间处理的关键。同时,根据具体需求选择合适的存储方式,也是实现高效时间处理的重要一环。
2024-11-08 12:12:45
1796
原创 Unity网络通信(part6.区分消息)
步骤:1.继承BaseData类2.实现其中的序列化、反序列化、获取字节数等相关方法3.发送自定义类数据时 序列化4.接受自定义类数据时 反序列化当将序列化的2进制数据发送给对象时,对方如何区分?例如:PlayerInfo:玩家信息ChatInfo:聊天信息LoginInfo:登录信息等等这些数据对象序列化后是长度不同的字节数组将它们发送给对象后,对方如何区分出他们分别是什么消息如何选择对应的数据类反序列化它们?
2024-11-08 08:00:00
489
原创 C#线程池
线程池是一种多线程处理形式,它允许开发者将任务添加到队列中,然后线程池会自动管理线程的创建、分配和回收,以执行这些任务。线程池中的线程都是后台线程,它们使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。C#线程池是一种强大的并发编程工具,它允许开发者在不需要手动管理线程生命周期的情况下,高效地执行并发任务。以下是对C#线程池的总结基本概念线程池是一种线程复用技术,它维护了一组可用线程,以便在需要时快速响应并执行任务。
2024-11-07 12:30:46
1263
原创 Unity网络通信(part5.编写服务端与客户端)
在前面的部分中,我们已经探讨了Unity网络通信的基础知识和相关概念。现在,我们将进入实际编程阶段,通过编写服务端与客户端的代码,来实现两者之间的通信。网络通信是现代游戏开发中不可或缺的一部分,它允许游戏内的玩家进行实时互动和数据传输。在Unity中,我们可以利用Socket编程来实现这一功能。Socket是一种网络通信的端点,它提供了在不同计算机或进程之间进行数据传输的能力。在本次教程中,我们将分别编写服务端和客户端的代码。服务端将负责监听客户端的连接请求,并处理客户端发送的数据。
2024-11-07 08:00:00
842
原创 Unity网络通信(part3.序列化和反序列化)
在网络通信中,我们把想要传递的类对象信息序列化为2进制数据(一般为byte字节数组),再将该2进制数据通过网络传输给远端设备,远端设备获取到该2进制数据后再将其反序列化为对应的类对象。
2024-11-06 08:00:00
1208
原创 Unity网络通信(part4.Socket)
在Unity网络通信的系列探讨中,我们已经了解了序列化和反序列化的基础知识和应用。接下来,我们将深入探讨Socket通信,这是Unity网络通信中的核心部分。
2024-11-06 08:00:00
3187
原创 Unity网络通信(part1.通信方案概述)
网络通信是服务器与Unity应用程序之间进行数据交换和通信的过程,这种通信在游戏开发、实时数据同步、多人游戏等场景中非常常见。对于Unity游戏开发来说,网络通信是实现游戏功能、提升用户体验的关键环节。
2024-11-05 08:00:00
2026
原创 Unity网络通信(part2.通信必备知识)
我们知道想要进行网络通信,进行网络连接,首先我们需要找到对应设备,IP和端口号是定位网络中设备必不可少的关键元素。C#中提供了对应的IP和端口相关的类 来声明对应信息,对于之后的网络通信是必不可少的内容。
2024-11-05 08:00:00
2829
1
原创 Unity网络开发基础(part4.数据通信模型)
在Unity网络开发中,数据通信模型是实现客户端与服务端之间数据交换的核心。不同的数据通信模型具有不同的特点和适用场景,选择合适的模型对于实现高效、稳定的数据通信至关重要。
2024-11-04 08:00:00
960
原创 Unity网络开发基础(part5.网络协议)
网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合,是网络通信的基础。在Unity网络开发中,理解和使用网络协议至关重要。
2024-11-04 08:00:00
1749
原创 Unity网络开发基础(part3.客户端与服务端)
网络开发是指利用网络技术和工具进行软件开发的过程。在Unity中,网络开发指的是在游戏中实现网络功能,比如多人游戏、联机对战等。
2024-11-03 08:00:00
922
原创 Unity网络开发基础(part2.IP、端口与Mac地址)
在当今这个数字化、网络化的时代,互联网已经成为我们生活中不可或缺的一部分。无论是工作、学习还是娱乐,我们都离不开互联网的支持。而互联网之所以能够如此高效地运作,离不开一系列复杂而精细的技术协议和地址系统的支持。其中,IP地址、端口号和Mac地址作为网络通信中的三大基石,扮演着至关重要的角色。以上就是今天要讲的内容,本文详细介绍了IP地址、端口号和Mac地址的基本概念、分类、查看方式以及它们在网络通信中的作用和联系。IP地址是网络设备的逻辑地址,用于定位设备在网络中的位置;
2024-11-03 08:00:00
889
原创 Unity网络开发基础(part1.网络基本概念)
网络开发是指利用网络技术和工具进行软件开发的过程。在Unity中,网络开发指的是在游戏中实现网络功能,比如多人游戏、联机对战等。
2024-11-02 09:01:39
859
原创 Input System的使用方法(part4.一些重要知识-UGUI、DEbug、Json数据与更改按键)
在Unity游戏开发中,Input System是处理用户输入(如键盘、鼠标、游戏手柄等)的核心系统。结合UGUI、Debug、Json数据以及按键更改等关键方面,以下是对Input System的一些重要知识的概要讲解。
2024-11-02 08:00:00
1915
原创 Input System的使用方法(part3.输入配置文件与PlayerInput)
可以理解为InputAction的集合,可以在一个文件中编辑多个InputAction的信息。它记录了想要处理的行为和动作(即InputAction的相关信息),开发者可以在其中自定义InputAction(比如开火、移动、旋转等),然后为这个InputAction关联对应的输入动作。
2024-11-01 08:00:00
961
原创 Input System的使用方法(part2.InputAction类)
InputAction是Unity Input System(输入系统)的一部分,用于处理用户的输入操作,如键盘按键、鼠标移动、游戏手柄按钮等。与传统的输入处理相比,新的输入系统提供了更多的灵活性、可扩展性和更好的跨平台支持。InputAction是InputSystem帮助我们封装的输入动作类。它的主要作用,是不需要我们通过写代码的形式来处理输入,而是直接在Inspector窗口编辑想要处理的输入类型。当输入触发时,我们只需要把精力花在输入触发后的逻辑处理上。
2024-10-31 08:00:00
1269
原创 Input System的使用方法(part1.安装配置与输入检测)
在Unity游戏开发中,输入处理是游戏与玩家交互的核心。随着Unity引擎的不断更新,Input System作为新一代输入处理框架,为开发者提供了更灵活、更强大的输入处理能力。相较于旧版的Input Manager,Input System不仅支持更多的输入设备和更复杂的输入场景,还提供了更好的跨平台支持,让开发者能够更轻松地处理各种输入需求。
2024-10-30 10:17:31
1325
原创 PureMVC在Unity中的使用(含下载链接)
PureMVC是一种基于模型-视图-控制器(MVC)模式的应用程序架构,旨在通过解耦和分离应用程序的不同部分,实现更好的代码组织和可维护性。在Unity游戏开发中,PureMVC框架的引入为开发者提供了一种高效、模块化的开发方式。
2024-10-29 13:23:14
2746
2
原创 MVC思想及其他常用软件架构模式
MVC,即Model-View-Controller(模型-视图-控制器)的缩写,是一种经典的软件设计模式,也是一种软件的设计思想。它将应用程序的输入、处理和输出分开,使得数据、视图和控制逻辑相互独立。
2024-10-26 15:30:54
1077
原创 Unity制作特殊形状按钮
在游戏开发中,按钮作为用户交互的重要元素,其外观和功能都至关重要。Unity提供了强大的UI系统(UGUI),可以方便地创建和管理用户界面元素,包括按钮。然而,UGUI的Button控件默认只能创建规则的长方形按钮。为了满足更丰富的设计需求,我们可以通过一些技巧来制作特殊形状的按钮。
2024-10-08 20:57:08
1288
原创 Unity2D利用Particle System制作残影冲刺
在Unity 2D游戏开发中,制作残影冲刺效果是一个常见的需求,旨在增强玩家冲刺时的视觉冲击力。本文将介绍如何利用Unity的Particle System(粒子系统)来制作这种效果,不会涉及到对象池。
2024-09-20 16:29:53
1116
原创 【学习笔记】Unity2D使用shader使指定部分发光
在Unity游戏开发中,使游戏中的特定物体或场景部分发出指定的光芒,能够增强视觉效果,提升整体的游戏体验。该方法参照了B站大佬的视频,本文只会简单的讲解制作过程,不会对shader进行更深入的探讨。(使用的Unity版本为2023.2.20)想要更详细了解请移步【Unity教程】使用ShaderGraph让贴图中指定部分发光, 做出炫酷的效果_哔哩哔哩_bilibili。
2024-09-03 15:16:30
2533
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅