- 博客(109)
- 收藏
- 关注
原创 =>符号含义
在上面的代码中,+=是在委托链上增加一个委托,(s,e) =>是一个lambda表达式,这个表达式创建一个委托,委托处理的主体就是=> 后面的部分。这里=>的用法相当于 { get;} = 即:将Sex字段设置为了只读属性,同时进行了赋值。=>主要有两方面的作用,一个限制属性状态,另一个简化匿名委托和Lambda。实际上, Lambda 表达式只是简化了匿名方法的语法而已。public string Sex => "男";用法二:Lambda表达式,匿名委托。用法一:定义只读属性。可以省去方法的定义。
2023-09-05 13:56:47
1001
转载 Unity标签
在一个类中声明一些变量,想要对这些变量进行验证的时候可以使用。该标签声明在类上面,与某个类关联使用,如下所示,挂在MyTest.cs时也需要挂载Image组件。下面代码中的level字段是私有的。声明在静态函数上,在Unity菜单中出现选项栏,执行对应功能。声明在类上面,加上此属性后,不运行程序,也能执行脚本。该标签声明在方法上面,将函数添加到组件的上下文菜单中。在代码中:规定的nums集合的长度和hp的赋值范围。该标签声明在变量上面,给此变量添加右键菜单。该标签声明在类上面,把类添加到菜单路径中。
2023-08-22 15:24:49
247
原创 Unity-数据持久化-PlayerPrefs
数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。简单来说:就是将游戏数据存储到硬盘,将硬盘中数据读取到游戏中,也就是传统意义上的存盘。是Unity提供的可以用于存储读取玩家数据的公共类。
2023-08-02 16:16:48
645
1
原创 Unity XML3——XML序列化
数据对象/// 文件名// 1.得到存储路径// 2.存储文件// 3.序列化/// 从xml文件中读取内容/// 对象类型/// 文件名
2023-07-28 09:46:39
1345
原创 Unity XML2——C#读写XML
放在 Resouces 或者 StreamingAssets 文件夹下,详见。 放在 Application.persistentDataPath 路径下。
2023-07-28 09:23:36
800
原创 Unity XML1——XML基本语法
全称:可拓展标记语言(EXtensible Markup Language) XML 是国际通用的,它是被设计来用于传输和存储数据的一种文本特殊格式,文件后缀一般为 .xml 我们在游戏中可以把游戏数据按照 XML 的格式标准存储在 XML 文档中,再将 XML 文档存储在硬盘上或者传输给远端,达到数据持久化的目的。
2023-07-28 09:15:17
1254
转载 URP-LensFlare组件-点光源
喜大普奔,Unity意识到了这个问题,并且在2021.2之后进行了完善,更新了URP专属的Lens Flare,需要在光照上添加Lens Flare(SRP),如果不是光照有的就不显示。网上查了很多,说是在Camera上加Flare Layer,我加了也不好用,后面发现Camera没有打开Post Precessing,因为它底层本质上是后处理,所以需要勾选。(新版本细化了对于每个面片的设置,但是对于图集的处理找不到了,如果采用图集,需要自己分割,一个一个放)Occusion 主要是涉及物体遮挡的设置。
2023-07-25 16:55:15
327
原创 使用AssetBundle打包动画片段
1.下载压缩包2.压缩文件夹复制进项目Packages文件夹3.unity报错,直接删除AssetBundle文件夹里的Tests文件夹4. window中打开AssetBundle Browser5.将需要打包的物体预制件或者动画拖入Configure面板6.Build面板中点击build。
2023-07-22 13:59:02
390
原创 Unity-AssetBundle
AB 包是特定于平台的资源压缩包,类似于压缩文件。其中资源可包括:模型、贴图、预设体、音效、材质球等等。 相较于 Resources 文件夹下的资源文件,AB 包能够更好管理资源:Resources 文件夹:打包时资源固定,只读,无法修改。AB 包:存储位置可自定义,压缩方式可自定义,后期可动态更新。 用途:减小包体大小压缩资源减少初始包的大小热更新资源热更新脚本热更新第一步:获取资源服务器地址第二步:通过资源对比文件检测和更新AB包客户端。
2023-07-22 13:49:03
372
原创 Unity动画数据的导出和导入
1.定义动画数据类2. 将动画数据序列化为JSON字符串。可以使用方法实现。3. 将JSON字符串保存到文件中,例如使用写入。4. 读取时,从文件中读取JSON字符串,使用反序列化回动画数据类。5. 根据反序列化后的动画数据类,获取相应的AnimationClip进行播放等操作。
2023-07-22 13:44:41
1705
原创 Unity-数据持久化-JSON
File 存读字符串的方法 ReadAllText 和 WriteAllTextJsonUtlity 提供的序列化反序列化方法 ToJson 和 FromJson自定义类需要加上序列化特性 [System.Serializable]私有保护成员需要加上 [SerializeField]JsonUtlity 不支持字典JsonUtlity 不能直接将数据反序列化为数据集合Json 文档编码格式必须是 UTF-8。
2023-07-22 13:32:19
436
原创 SVN使用
SVN全名Subversion,即代码版本管理工具,可以查看存储恢复修改代码修改记录。右键文件夹->Tortoise SVN -> Import ->输入URL、备注。SVN Checkout->输入URL、下载路径。2.创建组、添加用户。
2023-07-22 13:26:54
92
转载 Unity内文件夹详解
这些扩展可以添加新的菜单项、工具栏按钮、面板等等,这些脚本会在Unity编辑器中运行而不会出现在游戏中。Unity中的包是用于扩展Unity功能的可重用模块,它们可以包含脚本、预制件、材料等。注意:如果使用版本控制系统(如Git),应该忽略Temp和Logs文件夹,因为它们包含的文件是临时的,并且会在每次构建或运行时生成。Temp:此文件夹包含临时文件和数据,例如构建过程中的临时文件、导入的临时文件等。ProjectSettings:该文件夹包含Unity项目的设置,如输入管理器、标签、物理设置等。
2023-07-19 10:12:01
1903
原创 七大设计原则
单一职责原则(SRP:Single Responsibility Principle)当设计封装一个类时,该类应该只负责一件事。开闭原则(OCP: Open-Closed Principle)对扩展开放、对修改关闭。对于已经完成测试上线运行的功能,应该不能再修改这个累的任何接口和实现内容。新增需求就要朝向“功能接口化”设计,将功能操作抽象为接口,功能实现下移到子类。里氏替换原则(LSP: Liskov Substitution Principle)子类必须能够替换父类。客户端使用时,应该不
2023-07-12 13:45:07
259
原创 Unity接入SDK
C#是托管语言,C++是非托管语言。托管代码和非托管代码的区别1、托管代码是一种中间语言,运行在CLR上;非托管代码被编译为机器码,运行在机器上。2、托管代码独立于平台和语言,能更好的实现不同语言平台之间的兼容;非托管代码依赖于平台和语言。3、托管代码可享受CLR提供的服务(如安全检测、垃圾回收等),不需要自己完成这些操作;非托管代码需要自己提供安全检测、垃圾回收等操作。C#调用C++Dll库时需要使用特性[DllImport]
2023-07-12 13:37:23
646
原创 C#-迭代器
设计人员无需关心容器对象的内存分配的实现细节,可以用 foreach 遍历的类,都是实现了迭代器的。 迭代器就是可以让我们在外部直接通过 foreach 遍历对象中元素而不需要了解其结构。 迭代器(iterator)有时又称光标(cursor),是程序设计的软件设计模式。 迭代器模式提供一个方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的标识。 在表现效果上看,是可以在容器对象(例如链表或数组)上遍历访问的接口。 主要作用就是将复杂逻辑简单化,可以增加程序的可读性。
2023-06-29 16:34:41
1516
原创 C#-特殊语法
申明对象时,可以通过直接写大括号的形式初始化公共成员变量和属性。 var 是一种特殊的变量类型,它可以用来表示任意类型的变量。
2023-06-29 16:34:32
859
原创 C#-反射
主要用来加载其它程序集,加载后才能用 Type 来使用其它程序集中的信息。在程序运行时,通过反射可以得到其它程序集或者自己程序集代码的各种信息。一个运行的程序查看本身或者其它程序的元数据的行为就叫做反射。类,函数,变量,对象等等,实例化它们,执行它们,操作它们。有关程序以及类型的数据被称为元数据,它们保存在程序集中。程序集就是我们写的一个代码集合,我们现在写的所有代码。程序中的类,类中的函数、变量等等信息就是程序的元数据。程序正在运行时,可以查看其它程序集或者自身的元数据。它是访问元数据的主要方式。
2023-06-29 16:30:54
619
1
原创 C#-特性
特性提供功能强大的方法以将声明信息与 C# 代码(类型、方法、属性等)相关联。 比如一个类、成员变量、成员方法等等为他们添加更多的额外信息。 特性的目的是告诉编译器把程序结构的某组元数据嵌入程序集中。 特性与程序实体关联后,即可在运行时使用反射查询特性信息。 它可以放置在几乎所有的声明中(类、变量、函数等等申明)特性是一种允许我们向程序的程序集添加元数据的语言结构。 它是用于保存程序结构信息的某种特殊类型的类。 我们可以利用特性类为元数据添加额外信息。
2023-06-29 16:30:21
697
原创 C#-协变逆变
因为里氏替换原则 父类可以装子类 但是子类不能装父类,所以父类变子类。 用于在泛型中修饰泛型字母的,只有泛型接口和泛型委托能使用。 比如 object 变成 string,感受是不和谐的。 因为里氏替换原则,父类可以装子类,所以子类变父类。 用来修饰泛型替代符,只能修饰接口和委托中的泛型。 协变:父类泛型委托装子类泛型委托。 逆变:子类泛型委托装父类泛型委托。 逆常规的变化,不正常的变化。 协变和逆变是用来修饰泛型的。 和谐的变化,自然的变化。
2023-06-29 16:24:22
555
原创 Unity 延迟执行的5种方式
方法1适合需要同步显示时间的场合方法2适合简单的延迟场合方法3适合较为复杂的延迟场合方法4适合UI动画场合(配合其他功能一起使用)方法5可以自行尝试,不觉得能平替所有方法。
2023-06-20 18:35:27
9175
原创 Unity核心10——导航寻路系统
Unity 中的导航寻路系统是能够让我们在游戏世界当中,让角色能够从一个起点准确的到达另一个终点,并且能够自动避开两个点之间的障碍物选择最近最合理的路径进行前往中的导航寻路系统的本质,就是在 A 星寻路算法的基础上进行了拓展和优化导航网格(NavMesh)的生成——要想角色能够在场景中自动寻路产生行进路径,那么必须得先有场景地形数据,导航网格生成就是生成用于寻路的地形数据导航网格寻路组件(NavMesh Agent)——寻路组件就是帮助我们根据地形数据计算路径让角色动起来的关键。
2023-06-20 15:55:04
5438
原创 Unity核心9——3D动画
Has Exit Time:是否有退出时间,如果勾选,当切换动画时,动画一定是播放到下方的 Exit Time(百分比)的时间时才过渡到下一个动画。 我们是否可以这样做,比如开枪动画只影响上半身,下半身根据实际情况播放站立,跑动,蹲下动作,通过上下半身播放不同的动画就可以达到动画的组合播放。不同的是有一个上层的图标(Up Base Layer),通过连接该状态来转移到上层状态机的某个状态。主要用于直接从另一个层复制状态过来,在该层中进行修改,另一个层的设置信息都将保留,我们只需要替换状态对应的动画即可。
2023-06-20 15:53:08
7143
原创 Unity核心8——模型导入
支持很多模型格式。比如 .fbx /.dae /.3ds /.dxf /.obj 等等。 99%的模型都不是在 Unity 中制作的,都是美术人员在建模软件中制作,如 3DMax、Maya 等等。 当他们制作完模型后,虽然 Unity 支持很多模型格式但是官方建议是将模型在建模软件中导出为 FBX 格式后再使用 在 Project 窗口选中导入的模型,在 Inspector 窗口进行相关设置,4 个页签分别是Model 模型页签Rig 操纵(骨骼)页签动画页签Materials 材质。
2023-06-20 15:50:11
7399
原创 Unity核心7——2D动画
我们最常见的序列帧动画就是我们看的日本动画片,以固定时间间隔按序列切换图片,就是序列帧动画的本质 当固定时间间隔足够短时,我们肉眼就会认为图片是连续动态的,进而形成动画(会动的画面) 它的本质和游戏的。
2023-06-20 15:47:53
12418
原创 Unity核心6——Animation
通过 Window Animation Animation 打开 Animation 窗口 Animation窗口主要用于在 Unity 内部创建和修改动画,所有在场景中的对象都可以通过 Animation 窗口为其制作动画 原理: 制作动画时:记录在固定时间点对象挂载的脚本的变量变化 播放动画时:将制作动画时记录的数据在固定时间点进行改变,产生动画效果 动画时间轴: 每一个动画文件都有自己的一个生命周期,从动画开始到结束 我们可以在动画时间轴上编辑每一个动画生命周期中变化 动画中的
2023-06-20 14:53:59
6463
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人