自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Unity自定义框架(2)-----------事件中心

事件中心框架是一种设计模式,它允许游戏中的不同部分之间进行松耦合的通信。在Unity中,这一框架通过使用C#的委托和事件机制来实现。通过事件中心,游戏中的各个模块可以订阅和触发事件,实现模块之间的解耦和灵活性。通过将不同功能的代码封装成模块,并通过事件中心进行通信,游戏开发可以更容易地实现模块化。Unity作为一款强大的游戏开发引擎,提供了丰富的工具和框架,其中事件中心框架是一个备受关注的重要组成部分。事件中心框架通过允许模块之间通过事件进行通信,降低了它们之间的依赖性,使得代码更加清晰、可读和易于维护。

2024-04-08 17:22:45 399

原创 Unity自定义框架开发

Unity3D 是一款广泛使用的游戏开发引擎,它提供了丰富的功能和工具,使得开发者可以轻松地创建高质量的游戏。在开始开发一个新的游戏项目之前,我们需要搭建一个游戏框架,这个框架将提供一些基本的功能和结构,为后续的开发工作奠定基础。在本文中,我们将详细介绍如何搭建一个基本的Unity3D游戏框架,包括技术详解和代码实现。

2024-04-02 18:29:32 456

原创 Unity自定义框架(1)-----------单例模式

单例模式是一种创建型设计模式,其目的是确保一个类只有一个实例,并提供一个全局访问点。在Unity中,单例模式常用于管理全局数据、游戏状态或者资源管理。通过单例模式,我们可以在整个应用程序中方便地访问特定的对象。

2024-04-02 18:24:08 514

原创 C# 中 == 和 Equals 的区别

=和Equals在C#中都是用于比较对象是否相等的工具,但它们之间存在明显的区别。==主要用于值类型和引用类型的地址比较,而Equals则更侧重于内容比较,特别是在重写后。在选择使用哪一个时,应根据具体的场景和需求来决定。对于值类型,通常使用==;对于引用类型,如果需要内容比较,则应重写Equals方法。

2024-04-01 17:59:16 454

原创 C# 排序的多种实现方式(经典)

大多数时候,我们需要将list集合里面的数据进行排序,(即每个值都和它后面的数值比较,每次拿出最小值)先升序排列,然后对数组反转。

2024-04-01 17:57:41 460 1

原创 Visual Studio 常用快捷键大全

对于开发者而言,熟悉快捷键的使用,能够起到事半功倍的作用,提高工作效率。以下是我整理的一份Visual Studio常用快捷键清单,希望能够帮助到你。

2024-03-25 10:39:39 653

原创 十、C#基数排序算法

基数排序是一种稳定的排序算法,它的时间复杂度为O(d*(n+r)),其中d是位数,n是元素个数,r是基数(桶的个数)。相比其他比较性排序算法,基数排序的优势在于减少了元素之间的比较次数,并且可以处理负数。但是,基数排序的缺点是需要额外的空间来存储临时数组。C#十大排序总结-CSDN博客。

2024-03-21 09:37:38 624

原创 九、C#桶排序算法

桶排序是一种线性时间复杂度的排序算法,适用于待排序数据分布均匀的情况。它通过将数据分到有限数量的桶中,再对每个桶单独进行排序,最后将桶中的数据按顺序组合起来,得到排序结果。桶排序的时间复杂度为O(n+k),其中n为待排序数据的数量,k为桶的数量。但当数据分布不均匀时,可能会导致某些桶的数据较多,需要进行更多的排序操作,使得效率下降。

2024-03-21 09:31:42 298

原创 八、C#计数排序算法

计数排序的时间复杂度为O(n+k),其中n为待排序数组的长度,k为最大值和最小值之差。计数排序的优势在于对范围较小的整数排序时,速度较快且稳定,但受限于需要统计每个元素的出现次数,不适用于范围过大或包含负数的情况。C#十大排序总结-CSDN博客。

2024-03-20 17:18:51 586

原创 七、C#堆排序算法

堆排序是一种高效的排序算法,通过构建最大堆和反复调整堆的操作,实现对数组的排序。其时间复杂度为O(nlogn),并且具有较好的稳定性和空间效率。但是由于其涉及大量的元素交换操作,所以在实际应用中,可能不如快速排序等算法效率高。C#十大排序总结-CSDN博客。

2024-03-20 15:54:00 366

原创 六、C#快速排序算法

快速排序是一种高效的排序算法,它的优势在于平均时间复杂度为O(nlogn),在实际应用中通常表现出色。然而,最坏情况下的时间复杂度可能达到O(n^2),但通过合适的优化方法如随机选择基准元素、三数取中法等,可以避免最坏情况的发生,提高性能。递归方式简洁易懂但对于大数据量的排序可能会出现栈溢出的问题,而使用栈模拟递归则可以解决这个问题。

2024-03-19 17:31:40 337

原创 五、C#归并排序算法

归并排序是一种高效稳定的排序算法,时间复杂度为O(nlogn)。它的核心思想是将待排序序列分割成更小的子序列,然后逐步合并并排序这些子序列,最终得到一个有序序列。归并排序需要额外的空间来存储临时数组,但由于其分治的特性,适用于对链表和外部存储的排序。

2024-03-19 13:25:23 486

原创 四、C#希尔排序算法

希尔排序简单的来说就是一种改进的插入排序算法,它通过将待排序的元素分成若干个子序列,然后对每个子序列进行插入排序,最终逐步缩小子序列的间隔,直到整个序列变得有序。希尔排序的主要思想是通过插入排序的优势,减小逆序对的距离,从而提高排序效率。

2024-03-19 13:17:29 500

原创 三 C#插入排序算法

插入排序算法是一种简单且直观的排序算法。它的时间复杂度为O(n^2),其中n是待排序数组的长度。插入排序在处理小型数据集时具有一定优势,但是对于大型数据集,插入排序的性能会较差。

2024-03-18 14:25:56 874

原创 二、C#选择排序算法

选择排序(Selection Sort)是一种简单的排序算法,其实现原理如下:遍历待排序数组,从第一个元素开始。假设当前遍历的元素为最小值,将其索引保存为最小值索引(minIndex)。在剩余的未排序部分中,找到比当前最小值还要小的元素,并更新最小值索引。在遍历结束后,将找到的最小值与当前遍历位置的元素进行交换。重复步骤2至4,直到排序完成。/// 选择排序算法Console.WriteLine("原始数组: ");Console.WriteLine("排序后的数组: ");

2024-03-18 14:12:38 730

原创 C#十大排序总结

未完待续。。。

2024-03-14 23:41:31 1888

原创 一、C#冒泡排序算法

冒泡排序的名称来源于元素比较过程中,较大的元素会逐渐向右“冒泡”到正确的位置上。它的时间复杂度为O(n^2),在实际应用中适用于数据规模较小的情况。在实际应用中,我们需要根据具体情况选择合适的实现方式来平衡代码的可读性和排序效率。同时,如果对排序算法的效率要求较高,可以考虑使用其他更高效的排序算法,如快速排序或归并排序。未完待续。。。。。。。。。。。。。。

2024-03-14 23:31:32 842

原创 C#设计原则

通过依赖注入的方式,我们可以将具体的实现类传递给客户端,并根据需要调用相应的接口方法。在实际的开发过程中,并不是一定要求所有的代码都遵循设计原则,而是要综合考虑人力、成本、时间、质量,不刻意追求完美,要在适当的场景遵循设计原则。这样,我们遵循了开闭原则,对扩展开放(通过添加新的图形类型),对修改关闭(不需要修改现有代码)。在这个例子中,每个具体的实现类只关注自己需要用到的接口方法,而不需要实现多余的方法。通过将具体的子类对象赋值给基类引用变量,并调用相同的方法,我们可以看到不同形状的绘制操作被正确地执行。

2024-03-11 17:55:17 1403

原创 Unity 异步加载场景

Unity 异步加载场景

2022-11-02 16:14:42 199 1

原创 VR开发中常说的3Dof 和6Dof

VR开发中常说的3Dof 和6Dof

2022-10-28 10:41:24 2281

原创 Unity 异步加载场景

需要提前加载下一个场景 并得到允许的时候 加载当前预加载的场景

2022-10-25 16:33:58 121 1

原创 Unity 为什么不能直接修改vector3.x yz

Unity 为什么不能直接修改vector3.x yz

2022-10-19 11:40:33 624

转载 Htc vive 各个脚本及说明

简书Mark 很有用

2021-07-15 11:14:21 186

转载 Unity 项目优化细节

优化思路个人优化原则:三原则:注意细节、注意细节、注意细节!优化手段:1.善于使用工具2.减少总量3.空间、时间互换4.由浅入深1.善于使用工具:一定要善于使用工具来分析性能问题(Profiler),先找出性能瓶颈再做优化。2.减少总量:尽量减少性能消耗的总量(内存和CPU占用)。3.空间、时间互换:CPU和GPU可以互换,CPU和内存可以互换、内存和磁盘可以互换。4.由浅入深:先优化小的细节再优化大的结构。先优化浅显的表面,再优化深邃的底层。先优化资源

2021-07-08 13:37:00 521

原创 Unity发布Apk添加KeyStore

方法一 利用unity添加1.勾选Create New Keystore复选框。2.点击Browse keystore。也就是设置制作的keystore的路径和名字。3.keystore password:设置keystore的密码 。4.Confirm password:确认keystore的密码。5.Key:点击Unsigned(debug)之后会有一个下拉列表选择Create a new Key。并弹出一个二级弹框设置。6.在二级弹框中的Alias:设置别名

2021-07-06 09:49:19 474 1

原创 【Unity 编辑器】扩展总结 一:编辑器开发入门

编辑器相关文件夹介绍 Editor 该文件夹可以放在项目的任何文件夹下,可以有多个"Editor"文件夹。 编辑器扩展相关的脚本都要放在该文件夹内,该文件夹中的脚本只会对Unity编辑器起作用。 项目打包的时候,不会被打包到项目中。如果编辑器相关脚本不放在该文件夹中,打包项目可能会出错。 如果非要有些编辑器相关脚本不放在该文件夹中,需要在该类的前后加上UNITY_EDITOR的宏定义。 2. Editor Default Resources 该文...

2021-06-22 23:53:04 427 2

原创 c#基础学习(七)——C# 抽象类与接口的区别

如果想简单看下两者区别的,这里以 Excel 表格形式做了总结。

2021-06-17 23:48:40 265 1

原创 c#基础学习(六)——C# 类型转换

类型转换从根本上说是类型铸造,或者说是把数据从一种类型转换为另一种类型。在 C# 中,类型铸造有两种形式:隐式类型转换- 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。 显式类型转换- 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。下面的实例显示了一个显式的类型转换:...

2019-07-31 18:49:33 176

原创 c#基础学习(五)——C# 数据类型

在 C# 中,变量分为以下几种类型:值类型(Value types) 引用类型(Reference types) 指针类型(Pointer types)值类型(Value types)值类型变量可以直接分配给一个值。它们是从类System.ValueType中派生的。值类型直接包含数据。比如int、char、float,它们分别存储数字、字符、浮点数。当您声明一个int...

2019-07-24 18:49:33 174

原创 c#基础学习(四)——C# 基本语法

C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中。例如,以 Rectangle(矩形)对象为例。它具有 length 和 width 属性。根据设计,它可能需要接受这些属性值、计算面积和显示细节。让我们来看看一个 Rectangle(矩形)类的实现,并借此讨论 C# 的基本语法:...

2019-07-24 16:07:41 185

原创 c#基础学习(三)——C# 程序结构

在我们学习 C# 编程语言的基础构件块之前,让我们先看一下 C# 的最小的程序结构,以便作为接下来章节的参考。C# Hello World 实例一个 C# 程序主要包括以下部分:命名空间声明(Namespace declaration) 一个 class Class 方法 Class 属性 一个 Main 方法 语句(Statements)& 表达式(Expre...

2019-07-24 15:54:04 276

原创 c#基础学习(二)——C# 环境

在这一章中,我们将讨论创建 C# 编程所需的工具。我们已经提到 C# 是 .Net 框架的一部分,且用于编写 .Net 应用程序。因此,在讨论运行 C# 程序的可用工具之前,让我们先了解一下 C# 与 .Net 框架之间的关系。.Net 框架(.Net Framework).Net 框架是一个创新的平台,能帮您编写出下面类型的应用程序:Windows 应用程序 Web 应用程序...

2019-07-24 14:03:17 216

原创 c#基础学习(一)——C# 简介

C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。C# 是由 Anders Hejlsberg 和他的团队在 .Net 框架开发期间开发的。C# 是专为公共语言基础结构(CLI)设计的。CLI 由可执行代码和运行时环境组成,允许在不同的计算机平台和体系结构上使用各种高级语言。下面列出了 C# 成为一种广泛应用的...

2019-07-24 13:58:57 231

原创 C#多线程-- 信号量(Semaphore)

百度百科:Semaphore,是负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。也是操作系统中用于控制进程同步互斥的量。Semaphore常用的方法有两个WaitOne()和Release(),Release()的作用是退出信号量并返回前一个计数,而WaitOne()则是阻止当前线程,直到当前线程的WaitHandle 收到信号。这里我举一个例子让大家更容易理解:当我们这样实例化S...

2019-06-04 17:22:03 623 1

原创 Unity 2017Android环境配置(最新鲜的)

版权声明:本文为 哒哒咦哒哒 原创文章,转载请标明出处。如有不足之处欢迎提出意见或建议,联系QQ67591777 VX zhen67591777https://blog.csdn.net/qq_38112703/article/details/90694523第1步: 安装JDK;第2步: 安装Eclipse(可不安装);第3步: 下载并安装AndroidSDK;第4步: ...

2019-05-30 12:40:41 3996

原创 深入浅出聊Unity3D项目优化:从Draw Calls到GC

匹夫印象里遇到的童靴,提Unity3D项目优化则必提DrawCall,这自然没错,但也有很不好影响。因为这会给人一个错误的认识:所谓的优化就是把DrawCall弄的比较低就对了。对优化有这种第一印象的人不在少数,drawcall的确是一个很重要的指标,但绝非全部。为了让各位和匹夫能达成尽可能多的共识,匹夫首先介绍一下本文可能会涉及到的几个概念,之后会提出优化所涉及的三大方面:drawcal...

2019-05-06 19:50:53 284

原创 C# 对列(Queue)和堆栈(Stack)

C# 队列(Queue)队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队Queue 类的方法和属性属性 描述 Count 获取Queue中包含元素的个数    下表列出了 Queue 类的一些常用的 方法:序号 方法名 & 描...

2018-11-28 18:58:30 577

原创 C# ref与out关键字解析

简介:ref和out是C#开发中经常使用的关键字,所以作为一个.NET开发,必须知道如何使用这两个关键字.1、相同点ref和out都是按地址传递,使用后都将改变原来参数的数值。2、ref关键字(1)、使用ref关键字的注意点:i、方法定义和调用方法都必须显式使用 ref 关键字ii、传递到 ref 参数的参数必须初始化,否则程序会报错iii、通过ref的这个特性,一定程...

2018-11-28 18:23:56 190

转载 Unity实现基于UGUI的简易UI框架

Unity实现基于UGUI的简易UI框架什么是UI框架?UI框架中的 UIManager 管理场景中所有的面板, 控制面板之间的跳转.本Demo实现以下功能:关闭当前页面 显示新的页面 叠加显示 关闭当前页面并显示 关闭所有页面并显示 安卓返回键响应 返回上一个页面 退出程序 设计UI页面先搭建好所有的UI界面, 并保存为prefab...

2018-10-08 09:24:12 6732 4

转载 常用的正则表达式

只能输入数字: “^[0-9]*$” 。只能输入n位的数字:”^\d{n}$”。只能输入至少n位的数字:”^\d{n,}$”。只能输入m~n位的数字:”^\d{m,n}$”。只能输入零和非零开头的数字:”^(0|[1-9][0-9]*)$”。只能输入有两位小数的正实数:”^[0-9]+(.[0-9]{2})?$”。只能输入有1~3位小数的正实数:”^[0-9]+(.[0-9...

2018-09-30 13:41:39 409

空空如也

空空如也

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

TA关注的人

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