- 博客(81)
- 收藏
- 关注
原创 C#探索之路基础夯实篇(6):C#在Unity中的自定义特性
自定义特性(Attribute)是一种可以附加到类、字段、方法等各种元素上的标记,用于在编译时或运行时提供额外的信息或功能。它们是 C# 语言中的一种元编程特性,允许开发者通过声明性的方式为代码添加元数据。
2024-10-24 23:47:25 720
原创 [Mac]svn Error: E200030: SQLite 编译为 3.43.2,但是运行于 3.39.5
在版本稳定的情况下,尽可能少进行些骚操作,这种Homebrew的问题发生后,不好定位,解决方案杂七杂八,一种一种方案试下来代价太大。svn: E200030: SQLite 编译为 3.43.2,但是运行于 3.39.5。更新macOs系统至最新,更新后即可解决问题,重新运行svn命令行可以正常运行。进行完上述步骤后就可以实现类似于还原到svn可以使用的情形。终端模式下,命令行运行以下指令。
2024-07-20 02:49:56 1001 1
原创 C#探索之路基础夯实篇(5):语法糖概念解析
语法糖是一种编程语言的特性,它可以使代码更易读、更简洁,但不会增加语言的表达能力。根据特定的情况,有选择性的去使用语法糖而不是滥用。
2024-04-16 22:58:02 1836
原创 C#探索之路基础夯实篇(3):面向对象的三大特性和五大原则详解
类与对象:方法(Method):继承与派生:多态性:抽象(Abstraction):封装性:消息传递(Message Passing):其中我们所提及的三大特性主要指的是:封装(Encapsulation):继承(Inheritance):多态(Polymorphism):这些原则和特性共同构成了面向对象编程范式的核心。通过遵循这些原则和特性,开发人员可以编写出结构清晰、可维护、可扩展的代码。在面向对象编程中,编写的代码应该符合以下原则:单一职责原则(Single Responsibility Princi
2024-04-07 01:38:27 812
原创 C#探索之路基础夯实篇(4):UML类图中的六种关系详细说明
依赖关系(Dependency):表示一个类依赖于另一个类的定义或实现,当一个类的变化可能影响到另一个类时存在依赖关系,用带箭头的虚线表示。泛化关系(Generalization):表示类与类之间的继承关系,其中子类继承父类的属性和方法,用带空心三角箭头的实线表示。实现关系(Realization):表示类与接口之间的关系,类实现了接口定义的所有方法,用带空心三角箭头的虚线表示。表示一个类依赖于另一个类的定义或实现,当一个类的变化可能影响到另一个类时存在依赖关系,用带箭头的虚线表示。
2024-04-07 01:12:23 801
原创 C#探索之路基础夯实篇(1):编程中面向过程、数据、对象的概念辨析
面向数据编程(Data-Oriented Programming)是一种编程范式,它将数据视为程序设计的中心和核心,以数据的处理和转换为主要目标。通过将系统分解为多个对象,每个对象负责特定的功能或责任,可以使系统的设计和实现更加模块化和清晰,从而提高代码的可维护性和可扩展性。通过定义清晰的类和对象,以及规范化的接口和继承关系,团队成员可以更容易地理解和扩展彼此的代码,提高开发效率和代码质量。通过定义通用的基类或者抽象类,以及在子类中重写或者扩展父类的方法,可以实现代码的重用,减少重复编写代码的工作量。
2024-03-22 02:49:41 1167
原创 C#探索之路基础夯实篇(2):接口Interface的概念、实现、应用范围
接口定义了类应该具有的行为,但不关心具体的实现细节。通过接口,你可以定义一组方法、属性等,但是具体的实现由实现该接口的类来完成。
2024-03-22 02:46:42 1278
原创 C#探索之路(10):实现一个简单应用的功能——志愿填报
说明:虽然提及到的概念其实很浅显易懂,期望,权重,这是我一个短期内去实现的一个简要的功能Demo,hhh 大家可以发现一个很明显的bug-》概率怎么可能都为0.由于我的筛选条件比较简单,而且逻辑上其实是有问题的。我之所以会把这个内容展示出来主要的原因,是因为这是一个功能的实现外壳。旨在的目的是梳理写一个功能的逻辑:要确定的几个大步骤:1、数据准备以及数据读取2、筛选条件3、输出形式这三个步骤是最基础且最主要的。至于实现细节不过是在外壳里面去完善实现细节。比如说界面、功能、数据结构、
2023-07-14 00:38:23 522
原创 C#探索之路(9):深入理解C#代码编译的过程以及原理
编译器是将用某种程式语言写成的源代码(源语言),转换成另一种程式语言(目标语言)等价形式的程序。通常我们是将某种高级语言(如C、C++、C# 、Java)转换成低级语言(汇编语言、机器语言)。简而言之:编译器是高级语言解释器(转换器)转换缘由:机器组成是CPU,机器只能读懂并运行对应的cpu指令,对于我们的int、short、for这部分的内容根本不理解也不认识。
2023-06-20 03:47:12 3263 2
原创 C#探索之路(8):初探.Net中官方文档OpCode的格式
归根结底,总结只有一句话,那就是.Net中OpCode的格式的通俗的描述就是:一套用于统一公共语言工具的一套规范,以便于开发者能够根据一套规范去制定一系列的工具和拓展。这既是统一规范也是规定,没有规范和规定这个语言就无法制定标准。
2023-06-20 02:18:16 734 1
原创 C#探索之路(7):初探LitJson库并了解其中json的解析原理与处理报错
相信大家也看到了最近chagpt的一个热度与趋势,由于篇幅太长的原因,所以我就没有粘贴所有的代码至gpt中去一一做测试了,我便用以下代码做了一个gpt的尝试。这个跟平台提供的字符串的结构有关,如果数组为空返回的Null,那边边界处理起来就会很清晰。这是由于我们遍历 json2ObjectValue1.Count 时去收集了变量的信息,抛出的错误源头的异常,foreach 为空时,则停止遍历了;当然解决这个问题的也很简单,对解析出来的对应的字符串判空即可,如果为了确保正确,,看到编辑器提示的那就更加确信了,
2023-04-26 12:06:00 2381 4
原创 C#探索之路(6):浅学C#契约式编程、防御式编程
这点在我们常见的项目开发中就有用到,例如常见的商城系统,聊天系统这类带有输入框的内容,我们购买物品时,我们常见的有inputfield 输入框,而好的编程思维是应该只允许正确的输入结果通过,而非法的输入结果要么就被排除在外,要么就通过代码的例如正则表达式去实现筛选掉非法字符,常见的屏蔽字等等…更糟糕的是,防御式编程引入的额外代码增加了软件的复杂度。导表工具中运行时,当检测到表格为空时,或者数据出错时,为了方便去表现出其中的问题,我们通常会通过报错暂停程序的方式去做处理,并且抛出缺失的表格或者错误的原因;
2023-04-13 23:39:47 1224
原创 Unity3D中项目打包Android平台包运行过程中抛出异常:JSON integer is too large or small for an Int64
❗❗❗所以综上所述,如果您在项目当中采用到了**Newtonsoft.Json**做转换,并且抛出了此类的异常,估计就是以上原因了,即采用了一个并不适配ulong类型或者更大的值的 dll库文件,既然遇到了此类问题,一定是有办法解决的,作者也贴心的在github中提到了解决方式,”简单且粗暴🐧“ ,即**序列化成字符串后再自己进行转换**。作者也表示后续讲修复这个问题(**目前来说也的确修复了这个问题,亲测,但是至于序列化的过程有没有差异就不知道了**)
2023-03-16 20:12:44 1466 5
原创 Android问题解决方案(一):Android 打空包提交开发者后台提示没有”android:exported“的属性设置
通过一系列操作后,成功打出了所谓aab格式的安装包。(至于为什么是aab格式,相信有所了解的朋友自然也知道什么原因,还未曾了解的朋友可以先了解相关的信息,这里就不赘述了,自行了解一下为什么目前需要打出aab格式的安装包。5、android:exported = false的情况下,这个Activity将只会被当前Application或者拥有同样user ID的Application的组件调用,对于其他应用,即使有intent-filter匹配,也无法打开,即无法被其他应用隐式调用。
2023-02-18 22:10:31 1712
原创 C#探索之路(5):表现力不够但简洁的switch 表达式
此次的这个发现也是由于偶然间在项目中第一次看到,这种表达方式挺新颖的,不过有的时候如果判断条件并不多的话,可以直接通过三目运算符直接替代,或者通过if else的方式取代,以及switch case常见的方式取代,所以通常来说我们会比较少遇见,但是其中的效果也是等效的,无非就是通过判断变量所满足的条件,实现对应的逻辑。并且,如果在某些逻辑并不需要这么复杂的情况下,我的建议是直接采用可读性最好的一种方式去进行表达。
2023-02-06 17:47:09 1349
原创 C#设计模式详解(2)——Factory Method(工厂方法)
以上便是我对工厂模式的了解和学习总结,希望能够帮助大家去理解这个设计模式,当然如果发现我的讲解其实是有问题的,欢迎大家指出我的问题所在,也欢迎大家留言讨论,设计模式的学习一直在路上,我后续还是跟进设计模式的理解和学习,想要了解的朋友可以关注我哈~嘻嘻(●’◡’●)但是, 仔细想一下, 现在你可以在子类中重写工厂方法, 从而改变其创建产品的类型。例如:技能常见的分为 主动技能,被动技能,增益技能,技能有待学习,技能已经学习,技能可以升级,技能已经满级,技能的等级状态等等;
2022-11-27 18:46:13 1925
原创 C#探索之路(4):浅析C#中的托管、非托管堆栈与垃圾回收
执行回收时,垃圾回收器会在托管堆中检查应用程序不再使用的对象,然后执行必要的操作来回收其内存。但是当我回过头来了解这个垃圾回收机制的时候,我发现了一个很有意思的事情,当我去查询相关的资料的时候我发现,这其中的原理真的是一环扣一环,还环环不一样,我的内心:(TM*燃起来了!,讲述的挺好的,那我不经发出了疑问,那是不是有的Unity的C#的热更方案就有用到这个托管代码的互操作性呢?但是,请务必注意,如果采取这种方法,当代码越过运行时的边界时,实际的执行管理将再次交接到托管代码,因而需要遵守相同的限制。
2022-10-30 18:10:15 3961
原创 C#探索之路(3):浅析C#中的线性递归与尾递归
一般来说,线性递归和尾递归的时间复杂度相差不大(当然也有例外情况,比如斐波拉契数列,这是因为其线性递归的实现,产生了大量冗余的计算,它的时间复杂度为指数级,而其尾递归的实现只需要线性级别的时间复杂度),但尾递归的空间复杂度比较小(这是在假定尾递归被优化的前提下),线性递归容易理解,尾部递归性能比较好。
2022-10-24 23:23:36 1719
原创 C#设计模式详解(1)——Template Method(模板方法)
动机:在软件的构建过程中,对于某一项任务,他常常有稳定的整体操作结构,但是各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现解决方法:定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。............
2022-08-11 02:20:07 2291
原创 学习笔记:研读《C#入门经典》之易忽略的知识点(一)
1.隐式转换:从类型 A 到类型 B 的转换可以在所有情况下进行,执行转换的规则非常简单,可以让编译器执行转换。显式转换:从类型 A 到类型 B 的转换只能在某些情况下进行,转换的规则比较复杂,应进行某种类型的处理。隐式转换不需要做任何工作,也不需要另外编写代码。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L7D950x9-1655497550210)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-ima
2022-06-18 04:43:17 708
转载 Unity3D与Android之间——Androidmanifest.xml文件的介绍
Unity3D与Android之间——Androidmanifest.xml文件的介绍说明:在Unity开发移动平台相关应用程序时,难免会涉及到一些必要的插件(如:社会化分享插件ShareSDK、Umeng;增强现实开发Vufoia;扫描二维码插件等一些列),每一种插件分开使用时特别好用,无需特殊配置,使用Example案例就能快速上手使用。然后,当有时同时需要多个插件同时使用时,由于每个插件都包含有自身的Androidmanifest.xml文件,必然会出现的问题就是后面导入到Unity工程的Andr
2021-12-09 10:06:25 2099
原创 C#探索之路(2):反射和特性(二)
C#中的反射和特性(二)上一节C#中的反射和特性(一),简单的了解了一下反射是什么,以及部分的特性,接下来继续来了解C#中的其他特性。Assembly类Assembly类在System.Reflection命名空间中定义,它允许访问给定程序集的元数据,它也包含了可以加载和执行程序集。例如我们在上一章节所讲的内容的基础上加上以下代码:using System;using System.Collections.Generic;using System.Linq;using System.Refl
2021-09-14 02:58:14 444
原创 C#探索之路(1):反射和特性(一)
C#中的反射和特性(一)前言:前段时间将Unity3d中UGUI组件精简复盘落下了帷幕,后期博主可能会从设计模式,部分的算法,以及从UGUI实际操作上、或者从Unity3D部分的一些小游戏Demo上去做文章。但是在此之前,还是多多了解和使用使用C#吧,这就是我之前提到了框架,lua的框架在便捷的同时,也会增加一个人的编程语言的惰性,虽然不是不懂,但是久而久之,使用少了,也就没有那么熟练了。所以近期可能会更多的从C#或者Unity的相关小型Demo的讲解入手去练习与讲解。话不多说,我们直接进入正题~ 今
2021-09-12 01:17:07 1061
原创 Unity3d中UGUI组件精简复盘(二十)EventSystem组件与Standalone Input Moudle组件
上一节,我们简单概括了Unity3D编辑器中三大 Layout Group组件的简要介绍。具体详情链接为:Unity3d中UGUI组件精简复盘(十九)ContentSizeFitter组件话不多说,我们直接进入正题~ 今天我们简要概括复盘的组件便是EventSystem组件与Standalone Input Moudle组件啦~EventSystem组件与Standalone Input Moudle组件简述事件系统及图形射线和其他射线的区别UI部分的事件系统,用于管理事件响应通常我们第一次创建U
2021-09-07 22:58:10 1341 1
原创 Unity3d中UGUI组件精简复盘(十九)ContentSizeFitter组件
上一节,我们简单概括了Unity3D编辑器中三大 Layout Group组件的简要介绍。具体详情链接为:Unity3d中UGUI组件精简复盘(十八)Aspect Ratio Fitter话不多说,我们直接进入正题~ 今天我们简要概括复盘的组件便是Aspect Ratio Fitter组件啦~ContentSizeFitter组件自适应大小的一个组件或者自适应内容大小的一个组件添加方式是与Laout Group在同一个transform,也会搭配Item中添加Layout Element使用属性
2021-09-07 22:28:29 999 1
原创 Unity3d中UGUI组件精简复盘(十八)Aspect Ratio Fitter组件
上一节,我们简单概括了Unity3D编辑器中三大 Layout Group组件的简要介绍。具体详情链接为:Unity3d中UGUI组件精简复盘(十七)LayoutElement话不多说,我们直接进入正题~ 今天我们简要概括复盘的组件便是Aspect Ratio Fitter组件啦~Aspect Ratio Fitter组件横竖比例工具(纵横比例工具),用于限制图片横竖的比值Aspect Mode:None无,不进行适配;Width Controls Height,由宽度根据宽高比设置高度,此时高度无
2021-09-07 22:23:31 937
原创 Unity3d中UGUI组件精简复盘(十七)LayoutElement组件
LayoutElement组件意义:只能作用在被排列组件管理的子物体item上才能起来相应的作用,搭配LayoutGroup组件。可能需要另外添加一些东西,区别于排列元素之外的东西。Ignore Layout:忽略Group的管理即忽略自动排列Min Width:最小宽度Min Height:最小高度Preferred Width:首选宽度,不能违背Min WidthPreferred Height:首选高度,不能违背Min HeightFlexible Width:灵活宽度,会将所有item
2021-08-28 17:25:29 1506
原创 Unity3d中UGUI组件精简复盘(十六)三大 Layout Group组件
上一节,我们简单概括了Unity3D编辑器中Slider组件的简要介绍。具体详情链接为:Unity3d中UGUI组件精简复盘(十五)InputField组件话不多说,我们直接进入正题~ 今天我们简要概括复盘的组件便是自动排列的三大组件,分别是Horizontal Layout Group组件 、Vertical Layout Group组件、Grid Layout Group组件一、Horizontal Layout Group组件自动排列组件(网格自动布局)**Padding:**内边距的距离,
2021-08-20 21:13:57 1250
原创 Unity3d中UGUI组件精简复盘(十五)InputField组件
上一节,我们简单概括了Unity3D编辑器中Slider组件的简要介绍。具体详情链接为:Unity3d中UGUI组件精简复盘(十四)Dropdown组件话不多说,我们直接进入正题~ 今天我们简要概括复盘的组件便是Dropdown组件啦~InputField组件输入框,继承于Selectable基类属性:应用于登陆,用户名输入Text Component: Text的TransformText: Text输入的文本内容Character Limit: 字符的数量限制,最多能输入多少个,数值为0则
2021-08-04 18:59:53 720 1
原创 Unity3d中UGUI组件精简复盘(十四)Dropdown组件
上一节,我们简单概括了Unity3D编辑器中Slider组件的简要介绍。具体详情链接为:Unity3d中UGUI组件精简复盘(十三)ScrollView组件话不多说,我们直接进入正题~ 今天我们简要概括复盘的组件便是Dropdown组件啦~Dropdown组件下拉列表继承于SelectableTemplate: 模板Transform,生成的下拉框的模板,类似于把模板作为一个预制体Caption Text: 选中文本内容的Transform,表示选中内容的文本信息显示Caption Imag
2021-08-04 18:50:45 382
原创 Unity3d中UGUI组件精简复盘(十三)ScrollView组件
上一节,我们简单概括了Unity3D编辑器中Slider组件的简要介绍。具体详情链接为:Unity3d中UGUI组件精简复盘(十二)Slider组件话不多说,我们直接进入正题~ 今天我们简要概括复盘的组件便是Scrollbar组件啦~属性:Content: 显示内容的TransformHorizontl: 框是否能够纵向拖动Vertical: 框是否能够纵向拖动Movement Type: Content运动的模式,Unresticted没有限制,拖出去不会自动回来,Elastic有滚动的弹性,
2021-08-04 18:39:14 566
原创 Unity3D中项目在Unity编辑器下正常运行打包成功exe后无法正常运行
Unity3D中项目在Unity编辑器下正常运行打包成功exe后无法正常运行一、遇到的情况描述:项目中涉及到了文件读取的相关操作项目在Unity下能够正常获取到文件信息并且不报错项目能够成功打包并且不报错项目打包成exe后或者apk安装成功后项目无法正常运行。二、可能出现的原因:项目运行逻辑有问题(首要考虑)解决方法:首先在Unity编辑模式下,先运行游戏,测试游戏的整体情况,是否逻辑上本上就有问题。项目无法获取到配置信息原因:通过查阅相关资料了解到的是这个跟
2021-08-03 22:18:04 18635 8
原创 Unity3d中UGUI组件精简复盘(十二)Scrollbar组件
Scrollbar组件滚动条组件,Scrollbar继承于Selectable属性:**Handle Rect:**Hander的Transform**Direction:**Left To Right从左到右,Right To Left从右到左,Bottom To Top 从下到上,Top To Bottom 从上到下**Value:**滑动块移动的位置**Size:**滑块的大小**Number Of Step:**滑动几次能滑完全,0、1时可以任意滑动,大于1后就将滑动条分为几个部分,设
2021-08-03 20:25:19 627 1
原创 Unity3d中UGUI组件精简复盘(十一)Slider组件
Slider组件Slider继承于Selectable子物体:**Background:**背景框**FillArea:**填充范围**Fill:**填充图片**Handle Slide Area:**滑动范围**Handle:**滑动块图片属性:**File Rect:**Fill 的TransformHandle Rect:Handle的Transform**Direction:**Left To Right从左到右,Right To Left从右到左,Bottom To Top
2021-08-03 20:13:12 567 1
原创 Unity3d中UGUI组件精简复盘(十)Toggle组件
Toggle组件Toggle继承于Selectable属性:Is On:代表复选框的勾选状态Toggle Transition: None状态改变时没有其他效果,Fade渐隐渐现效果**Graphic:**对应Toggle状态改变的图片**Group:**用于被ToggleGroup组件进行管理**OnValueChanged(Boolean):**类似于Button里面的一个Onclick事件绑定。我们可以通过手动设置来进行绑定,当然我们也一样可以通过手写代码控制:例如:TestTogg
2021-07-28 16:52:38 472 1
原创 Unity3d中UGUI组件精简复盘(九)Button组件
Button组件继承于Selectable,与Selectable不同的是Button中用到了事件可以直接在Unity界面中手动添加所写的方法,当然所写的方法需要挂载在对应的组件上[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BBeWobKl-1622920788091)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210601193704507.png)]chang
2021-07-28 14:49:57 401
原创 Unity3d中UGUI组件精简复盘(八)Selectable基类
Selectable基类交互组件的基类,只是用于设计UI的效果,并不涉及到事件interactable:是否能够交互,勾选可交互,不勾选置灰不可交互Transition: Color Tint属性如下**Target Graphic:**作用于某image元素[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-44ujEiTi-1622920744302)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-
2021-07-28 14:00:27 2266
原创 Unity3d中UGUI组件精简复盘(七)Mask组件
Mask组件Mask:遮罩,可以作用于3D物体Rect Mask:只能作用于同平面的2D物体区别:Mask遮罩,可以作用于3D物体,Rect Mask只能作用于同平面的2D物体Unity遮罩已经为什么我们要避免使用Mask??因为添加Mask会增加Drawcall,会影响性能,同时Mask不利于层级的合并。当没有使用Mask的时候,可能只需要一个Drawcall既可以绘制出UI的渲染效果,但是当我们添加了Mask以后,Mask会作为单独的一个层级来渲染绘制,其他的UI也会作为单独的一个层级来绘制
2021-07-26 00:43:10 1292 1
原创 Unity3d中UGUI组件精简复盘(六)Text组件
Text组件Font Style:字体的风格Normal:普通Bold:加粗ltalic:斜体Bold And ltalic:加粗与斜体Font Size:字体的大小,超出文本框的话,不显示Line Spacing:行间距RichText:富文本,一般用于设置文本框中部分的字体的颜色,用到以下格式:加粗:斜体<size=50>:设置字体大小<color=#ff0000>:设置字体颜色Horizontal Overflow:水平方向上显示内容是否包裹在框内,w
2021-07-26 00:28:25 679 2
原创 Unity3d中UGUI组件精简复盘(五)RawImage组件
RawImage组件Texture:图片资源为Default模式下就可直接拖入,Image组件则不同,需要将图片资源设置为sprite才可进行拖入UV Rect:UV坐标(x,y)(范围0~1),贴图纹理都是有UV坐标的,对应的是贴图映射到贴图表面的效果,应用:可以做成帧动画三维模型除了顶点XYZ坐标就是UV坐标了,先上图:它的坐标是这样的,定义纹理坐标的顺序为:(0,0)-》(1.0,0.0)-》(0.0,1.0)-》(1.0,1.0)【不要搞错哦】RawImageAni.csusing S
2021-06-13 01:39:24 755 3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人