- 博客(44)
- 收藏
- 关注
原创 C#区分委托与事件
本篇文章来学习一下委托与事件的区别,以及它们之间的关系。委托(Delegate)是一种数据类型,可以存储方法的引用,允许通过该引用调用方法,也允许通过 += 和 -= 操作符来添加或删除方法。委托是一种数据类型,委托代表的是方法,当调用委托时就是调用了这个方法。事件(Event)是一种特殊的委托,它基于委托,是委托的封装,确保外部代码不能直接更改事件的委托列表(即确保事件不能被直接赋值或修改),只能通过订阅 += 和取消订阅 -= 来操作事件。委托是事件的基础。委托可以直接调用,而事件不能直接触发
2025-01-22 16:12:18
1943
原创 【超详细】C#事件
本篇文章来从事件的定义、特点、使用步骤等方面对事件进行学习。事件(event)是声明为委托类型的类的成员,允许一个类或对象通知其他类或对象某个特定的事情已经发生。事件基于委托。表示类的偶发行为,一旦这个行为发生,往往要引起其他行为/方法发自动执行。事件是用来实现两个或多个行为的联动调用的。简而言之,事件(关键字event)是声明为委托类型的类的成员变量,是一种特殊的委托。
2025-01-22 16:10:45
916
原创 【一文了解】C#重点-委托2
本篇文章来进一步学习一下C#的委托,委托允许将方法作为参数传递给其他方法,C#中的委托类似于 C 或 C++ 中的函数指针。1.1委托的定义委托是一种数据类型(关键字delegate);委托代表的是方法;当调用委托时就是调用了这个方法。1.2委托的3个基本使用步骤1)定义委托在定义端定义委托,定义格式为delegate 返回类型 委托类型名(形参列表);2)创建实例。实例化委托的4种方法,匿名方法,lambda表达式
2024-12-31 17:32:32
1257
2
原创 Unity录屏插件-使用Recorder录制视频
本篇文章来分享一下Unity官方的录屏插件Recorder的简单使用。Recorder允许用户在运行时或编辑模式下录制游戏或应用的内容。录制Game View视频,录制360 View全景视频
2024-12-19 19:02:49
2671
4
原创 【一文了解】C#重点-委托1
本篇文章来学习一下C#的委托,委托是C#中的一个重要概念,它允许将方法作为参数传递给其他方法。委托(delegate)是方法的代理/代表,委托的是方法,当调用委托时就是调用了这个方法。是方法的引用,是一种数据类型。委托代表【代理/表示】的是方法【代表和委托签名一致的任何方法,签名:返回类型和参数组成】、【委托是一类行为的抽象】委托的签名是指它所引用的方法的签名。委托签名包括方法的返回类型和参数类型,而不包括委托本身的名称或其他修饰符。因此,尽管方法名称相同,但它们的签名不同,所以是不同的方法。
2024-12-19 19:01:19
920
原创 Visual Studio开发插件【通译灵码】与Visual Studio快捷键
本篇文章来分享一款免费的Visual Studio插件-通译灵码,以及Visual Studio常用的快捷键,通过这些,可以使开发更高效。通译灵码具有提示功能和问答功能。Ctrl+RR:按住Ctrl,摁两次R,可对选中变量进行重命名F5:启动调试F5+shift:停止调试F10:逐过程执行F11:逐语句执行Ctrl+K+F:自动对齐Ctrl+K+C:注释选中的代码Ctrl+K+U:取消注释Ctrl+R+M:提取方法,重构,增强代码的可读性自动属性快捷键:输入prop
2024-12-06 21:00:00
1522
原创 【一文了解】C#基础-接口
本篇文章来分享一下C#的接口。从接口的定义、特点与规则、接口的实现、接口与继承的比较、接口与抽象类的比较等来详细学习接口。在C#中,接口(interface)是用来定义类或结构(struct)所实现的一组公共行为的抽象。接口本质上定义了行为规范,但不实现行为。接口是规范,定义一组对外的行为规范,要求它的实现类必须实现接口的所有成员。
2024-12-06 20:30:00
992
原创 【超详细】C#基础-面向对象三大特性:多态
今天来详细学习一下C#面向对象的三大特性:多态。多态(Polymorphism)是面向对象编程(OOP)中的一个核心概念,它允许对象以不同的方式表现出不同的行为。通过多态,子类可以在继承父类的方法时,修改或扩展父类的行为,甚至在运行时决定调用哪个类的方法,这使得程序更加灵活和可扩展。多态有两种主要形式:1)编译时多态(静态多态):主要通过方法重载和方法隐藏来实现。2)运行时多态(动态多态):主要通过方法重写和接口实现来实现。方法重写是指子类重写父类的虚方法或抽象方法
2024-11-26 19:00:00
1264
2
原创 【超详细】C#基础-面向对象三大特性:封装、继承
今天来详细学习一下C#面向对象的三大特性:封装、继承。封装(Encapsulation) 是面向对象编程(OOP)的一个基本特性,它指的是将对象的状态(字段)和行为(方法)捆绑在一起,并通过控制访问权限来保护对象的内部状态。继承(Inheritance) 是面向对象编程(OOP)中的一个重要特性,它允许一个类从另一个类派生(继承)出新的类,从而实现代码的复用和扩展。
2024-11-26 18:00:00
1222
原创 【超详细】C#基础-基本运算、语句
本篇文章来学习一下基本运算和语句。1.基本运算(1)运算符①赋值运算符将右边的值赋值给左边变量②算术运算符+、-、*、/、%(取模/余数),用于数值类型的两个数据进行算术运算。其中string类型可以使用+,意为字符串的拼接③比较运算符比较运算符用于比较两个值,并返回一个布尔值(true 或 false)
2024-11-19 20:00:00
1195
原创 【一文了解】C#基础-数组
本篇文章来学习一下数组,从声明、初始化、访问、遍历等方面来了解数组,通过学习多维数组、锯齿/交错数组、参数数组加深对数组的理解。在C#中,数组是一个存储固定大小、相同类型数据的集合。数组的元素是按顺序排列的,可以通过索引来访问和修改。数组在C#中是引用类型,创建后数组的大小是固定的。
2024-11-19 19:45:00
1484
原创 【一文了解】C#基础-集合
本篇文章来学习一下集合,C#集合主要分为非泛型集合与泛型集合。泛型集合的类型更安全、性能更高,在C#的大多数开发中,更推荐使用泛型集合。而非泛型集合由于灵活性更高,适合存储多种类型的数据,但因类型安全差,性能较低,需谨慎使用。
2024-11-08 20:15:00
1007
原创 C#基础-区分数组与集合
本篇文章来学习一下C#的数组(Array)与集合(Collection),数组和集合是两种常用的数据结构,均为引用类型,下面通过定义、大小、访问速度等方面比较数组和集合的不同,来进一步加深对它们的理解。
2024-11-08 20:00:00
1685
原创 C#基础知识-枚举
普通枚举用于列举某种数据的所有取值,可以增强代码的可读性,限定取值。枚举元素默认为int,准许使用的枚举类型有byte,sbyte,short,ushort,int,unit,long或ulong。每个枚举元素都有值,默认情况下,第一个枚举值为0,后续值依次递增,可以修改值。标志枚举是指用[Flag]特性修饰的枚举,表示可以组合的位标志。通过使用位运算,标志枚举允许使用单个枚举值来表示多个状态。要创建标志枚举,通常会将每个枚举成员的值设置为2的n次方,这样可以确保它们在二进制表示中是互斥的。
2024-10-24 17:38:10
1344
原创 C#深入理解值类型和引用类型的存储
今天来进一步学习值类型和引用的存储,加深对它们的理解,区分值类型和引用类型可以查看。首先来了解一下内存,内存是CPU与其它外部存储器交换数据的桥梁,用于存储正在执行的程序与数据,即数据必须加载到内存才能被CPU处理。存储程序在运行时,CLR将申请的内存空间从逻辑上进行划分。分为栈区和堆区。1)栈区。用于存储正在执行的方法,分配的空间叫做栈帧。栈帧中存储方法的参数和变量等数据。方法执行完毕后,对应的栈帧将被清除。2)堆区。用于存储引用类型的数据。C#的编译过程。
2024-10-24 17:37:32
883
原创 C#基础-面向对象的七大设计原则
今天来分享一下面向对象的七大原则1.开放封闭原则(OCP)2.单一职责原则(SRP)3.依赖倒置原则(DIP)4.里氏替换原则(LSP)5.接口隔离原则(ISP)6.合成复用原则(CRP)7.迪米特法则(LOD)
2024-10-12 18:29:04
754
原创 【超详细】C#基础-面向对象
今天来分享一下面向对象的编程思想。主要介绍面向对象的基本概念,区分面向对象和面向过程,了解面向对象的主要思想、三大特性。面向对象是一种编程思想,将现实世界中的事物抽象成对象,并通过对象之间的交互来解决问题。面向对象的的核心是类和对象。类: 抽象的数据类型,定义了对象的属性(数据)和方法(行为),是对象的抽象。对象:类的实例,是类的具体实现。
2024-10-12 18:23:47
1245
原创 C#自定义工具类-游戏对象池
本篇文章来分享一下如何实现游戏对象池,游戏对象池通过重用已存在的对象,减少频繁的内存分配和回收,从而降低垃圾回收的负担,提升性能。
2024-09-30 08:45:00
795
原创 C#自定义工具类-数组工具类
本篇文章来分享一下如何实现数组工具类。工具类,一般具有很强的通用性,复用性很强,在需要时就可以移植到项目,可以让我们的工作更加快捷方便。今天要分享的数组工具类实现了有关数据基本操作。数组工具类基本操作1.排序:升序,降序2.查找1)查找最值:最大值,最小值2)查找满足条件的单个对象3)查找满足条件的所有对象4)选取数组中所有对象的某一字段
2024-09-27 21:30:00
758
原创 【一文读懂】C#如何实现通用的排序功能
本篇文章来分享一下C#如何实现通用的排序功能。在项目中经常会使用到排序的方法,那如何使排序方法更加通用呢?可以通过泛型,接口,委托来实现。
2024-09-27 21:00:00
695
原创 【一文读懂】C#区分值类型和引用类型
本篇文章来分享一下C#的值类型和引用类型,主要从存储位置,数据类型,赋值,默认值,内存管理5个方面进行区分。1. 存储位置1)值类型:在栈上分配内存。存储的是数据本身2)引用类型:在堆上分配内存。存储的是数据的引用(内存地址)2. 数据类型1)值类型:byte,short,int,long,float,double,decimal,bool,char,struct,enum2)引用类型:string字符串,数组,class类,interface接口,delegate委托
2024-09-20 19:00:00
1065
原创 C#的数据类型转换
本篇文章来分享一下C#的基本数据类型转换,主要包括四种方法:隐式转换、显式转换、Convert类、字符串解析。隐式转换是在不丢失数据的情况下由编译器自动进行的转换,一般是小类型自动转换为大类型.显式转换时手动指定的转换,适用于可能丢失数据的情况,一般是大类型强制转换为小类型。其他情况结果为int类型(char类型,枚举类型可以隐式转换为int类型)当多种类型变量参与运算时,会产生类型提升,即自动类型转换/隐式转换,
2024-09-20 18:45:00
1318
原创 C#基础知识-.NET,变量,容量单位,数据类型
C#基础知识-.NET,变量,容量单位,数据类型本篇文章来分享一下C#的基础知识,主要讲述一下变量和数据类型的相关知识。在C#中,数据类型主要分为两大类:值类型和引用类型。变量是用来存储和表示数据的一种方式(变量在程序运行时存储在内存中,变量实际上是分配给特定数据类型的内存空间,用于存储和操作数据)。
2024-09-13 21:45:00
683
原创 【一文读懂】Unity布局组件:Horizontal Layout Group(水平布局组),Vertical Layout Group(垂直布局组),Grid Layout Group(网格布局组)
本篇文章来学习一下Unity常用的布局组件,主要包括Horizontal Layout Group(水平布局组),Vertical Layout Group(垂直布局组),Grid Layout Group(网格布局组)。这些布局组件常与、Layout Element组件一起使用。
2024-09-13 21:00:00
3646
原创 Unity制作更换字体的插件
本篇文章来分享一下Unity如何制作更换字体的插件,可以快速更换场景中所有字体,更换所有预制体中的字体,更换指定路径下预制体中的字体。
2024-09-06 20:30:00
1534
原创 区分行结束符“\r“,“\n“,“\r\n“
本篇文章来区分一下行结束符“\r“回车符,“\n“换行符,“\\r\n“回车换行符\r(Carriage Return)代表回车符,它的ASCII码是13,通常用于将光标移动到当前行的开头。在Mac OS(早期版本)中使用\n(Line Feed)代表换行符,它的ASCII码是10,通常用于将光标移动到下一行。在Unix和Linux系统和现代Mac OS中使用\r\n (Carriage Return + Line Feed)表示换行的字符序列。主要在Windows操作系统中使用
2024-09-06 19:30:00
1129
原创 C#区分string、StringBuilder
本篇文章来区分string、StringBuilder,主要从可变性,性能,线程安全三个方面进行比较。string:不可变,性能更低,但线程安全。适合于简单的字符串拼接和读取。StringBuilder:可变,性能更高,但线程不安全。适合于复杂、频繁的字符串操作,且需要额外处理线程安全问题,StringBuffer属于Java概念,可变、线程安全,用于处理多线程环境中的字符串操作。
2024-08-30 23:38:31
810
原创 创建自定义脚本编辑器
本篇文章来分享一下如何创建自定义脚本编辑器,以便更好地管理代码。UnityEditor.AssetModificationProcessor用于处理和自定义资产导入或修改的过程,允许在资产被修改、导入或删除时插入自定义处理逻辑。EditorCoroutineUtility适用于需要在编辑器中异步执行任务的场景,例如在自定义编辑器工具或窗口。自定义菜单
2024-08-30 23:19:35
1333
原创 6.Unity的常用路径和特殊文件夹
Unity的常用路径Application.dataPath、Application.persistentDataPath、Application.streamingAssetsPath、Application.temporaryCachePath、Application.consoleLogPath、Application.unityCachePath、Unity的特殊文件夹Assets 文件夹、Resources文件夹、StreamingAssets文件夹、Editor文件夹、Plugins 文件
2024-08-23 22:00:00
4072
原创 5.刚体与碰撞器详解,区分碰撞与触发(超详细)
本篇文章来进一步学习刚体和碰撞器,并来区分一下碰撞和触发的条件与阶段那什么时候给物体加刚体呢①在玩家可移动的范围内,会被碰撞的物体需加刚体,即需要有物理碰撞效果②不需要物理效果,但需要物理引擎来检测是否碰撞触发器的应用①②有刚体组件的物体受物理引擎的影响;有碰撞器组件的物体,勾选Is Trigger就成为了触发器,不勾选就是碰撞器。牢记碰撞条件(①两者均具有碰撞组件②其中运动的物体具有刚体组件)和触发条件(①两者均具有撞组件②其中一个带有刚体组件③其中一个勾选Is Trigger)
2024-08-20 21:30:00
1425
原创 4.掌握Unity类图,快速了解常用组件(超详细)
本篇文章来进一步学习Unity,学习一些重要类和Unity类图,以及常用的组件。Unity重要的类:①Object(对象)②GameObject(游戏对象)③Component(组件)④Shader(着色器)⑤Material(材质)⑥Mesh(网格)⑦Texture(纹理)Unity类图常用组件①Transform(变换)②Behaviour(行为)③Collider(碰撞器)④RigidBody(刚体)⑤MeshFilter(网格过滤器)⑥Renderer(渲染器)⑦MonoBehaviour
2024-08-15 21:30:00
2128
原创 3.了解Unity的生命周期(超详细)
Unity的生命周期1)初始化阶段①Awake()②OnEnable()③Start()2)更新阶段①FixedUpdate()②Update()③LateUpdate()3)渲染阶段OnGUI()4)销毁阶段①OnDisable()②OnDestroy()OnTriggerXXX(Collider other):触发检测OnCollisionXXX (Collision collisionInfo):碰撞检测OnMouseXXX():鼠标交互
2024-08-13 17:10:05
6185
原创 2.Unity的基础概念和基本使用(一看就会)
本篇文章来进一步了解Unity,主要讲述一下几个比较重要的基础概念和Unity的基本使用。场景是一组游戏对象的集合,游戏对象是一个装组件的容器,组件是游戏对象的功能模块,Unity是面向组件开发世界坐标系(World Position)、本地坐标系(Local Position)常用快捷键 点击Q:左击拖拽场景,右击拖放旋转世界;点击W:移动变换切换 轴心pivot、锚点anchor视图切换 ISO:Orthographic,正交视图模式;Persp:Perspective,透视视图模式
2024-08-09 21:30:00
1974
原创 1.初识Unity,了解一个Unity项目的完整创建流程(超详细)
初识Unity,了解一个Unity项目的完整创建流程1.Unity下载2.Unity项目的完整创建流程2.1.新建项目2.2.导包2.3.Preferences设置2.4.Player Setting设置2.5.打包3.Unity的界面4.Unity项目的文件本篇文章主要介绍一个Unity项目的完整创建流程,以及Unity的界面和项目有关文件。
2024-08-08 21:30:00
5915
原创 软件设计模式---适配器模式
适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。双向适配器模式:在适配器中同时包含对目标类和适配者类的引用,适配者可以通过它调用目标类中的方法,目标类也可以通过它调用适配者类中的方法。分类类适配器对象适配器接口适配器例题使用Java语言实现一个双向适配器实例,使得猫(Cat)可以学狗(Dog)叫(Cry()),狗可以学猫抓老鼠(catchMouse())。要求绘制相应的类图并写出适配器(Adapter)类的代码。
2023-04-22 00:04:52
1096
原创 软件设计模式---抽象工厂模式
1.抽象工厂模式①定义抽象工厂模式是一种为访问类提供一个创建一组相关或相互依赖对象的接口,其访问类无须指定所要产品的具体类就能得到同族的不同等级的产品的模式结构.抽象工厂模式是工厂方法模式的升级版本,工厂方法模式只生产一个等级的产品,而抽象工厂模式可生产多个等级的产品。②使用条件1)系统中有多个产品族,每个具体工厂创建同一族但属于不同等级结构的产品。2)系统一次只可能消费其中某一族产品,即同族的产品一起使用。③产品等级结构与产品族
2023-04-20 23:58:26
341
原创 软件设计模式---工厂方法模式
1.工厂方法模式定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类.是对简单工厂模式的进一步抽象.简单工厂模式:若要创建的产品不多,只要一个工厂类就可以完成.但违背了“开闭原则”2.主要角色抽象工厂(Abstract Factory)具体工厂(Concrete Factory)抽象产品(Product)具体产品(Concrete Product)3.例题宝马(BMW)工厂制造宝马汽车,奔驰(Benz)工厂制造奔驰汽车。使用工厂方法模式模拟该场景
2023-04-19 22:25:52
752
原创 什么是整型提升?
整型提升是C语言或C++里的一种运算法则,它的内容是:char, bool, short, int, unsigned char,unsigned short,unsigned int参与运算时,若有unsigned int, 则参与运算的类型就提升为unsigned int;若无unsigned int, 就都提升为int。运算法则:1.整型提升2.运算结果的类型以运算中类型精度高的为准。浮点型>整型
2023-02-25 21:58:11
382
原创 什么是数据溢出?该怎么计算?
1.数据溢出:当变量的值超出了数据类型表示的范围时,计算机会自动将其调整到改数据类型表示的范围。不太了解数据类型表示的范围的话,可以看一下基本的数据类型。2.计算方法:①大于数据类型表示的最大范围,减去该数据类型表示的范围的总数量②小于数据类型表示的最小范围,加上该数据类型表示的范围的总数量其中数据类型表示的范围的总数量=2^(该数据类型所占的字节数*8)
2023-02-20 20:18:10
4927
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人