- 博客(59)
- 收藏
- 关注
原创 创建和管理大量的数据对象:ScriptableObject
在Unity的Project视图中,通过右键菜单选择“Create” -> “Items” -> “Item”来创建。如:多个场景中重用的数据对象以存储和管理游戏中的数据:物品、角色属性、配置数据等。保存后可在Unity中Create菜单中出现Item。的子类,可定义和编辑属性、字段和方法,及自定义的序列化数据。创建一个名为ItemData的类,该类继承自。这些字段可以被用于定义物品的属性。(游戏模型)三个字段。
2024-07-21 12:56:04
328
原创 种田RPG游戏(一)
5、找到Walking、Running和Idle的资源,点击右侧小三角,复制mixano.com,分别重命名为Walking、Running和Idle,将复制的Walking、Running和Idle转移到Animation文件夹。(4) 选中Import Asset的Materials文件夹下Dirt材质球,将Farmland文件夹下的aerial_ground_rock_nor_gl_4k拖放到Normal Map上,点击Fix Now。8、以InventorySlots为父物体,UI-Image。
2024-07-19 12:44:22
892
原创 创建一个单例
一般来说,单例模式有多种实现方式,而选择使用哪种方式取决于你的需求和项目的架构。以下介绍了几种常见的单例实现方式:(1) 饿汉式单例:在类加载时就创建实例,保证了线程安全,但可能会造成资源浪费。} }(2) 懒汉式单例:在第一次调用获取实例的方法时才创建实例,需要考虑线程安全的问题。get(3) 使用静态初始化器:利用类的静态初始化器实现单例,可以保证线程安全,且在使用时才创建实例。} }在选择哪种单例实现方式时,可以根据你的需求和项目的具体情况来决定。
2024-07-19 09:15:08
299
原创 下载动画人物
7、点击UPLOAD CHARACTER,看到男孩步行,选择In Place,点击下载,不需要皮肤。4、点击弹出的人物,弹出对话框选择USE THIS CHARACTER。6、点击Animations,搜索walk。2、点击Characters。
2024-07-11 17:15:36
122
原创 配置光源——笔记
(二)Spot 聚光灯:昏暗(凌晨或傍晚),有一个光斑。2、Mode:渲染类型选择Realtima(实时渲染)(1) Resolution:分辨率高低(高效果好)(一)Directional Light(定向光)2、fog效果——注意颜色与天空保持一致。(四)Area——bake后才产生效果。1、Shadow Type :阴影类型。1、只改变方向变化,不记录位置变化。1、天空盒资源——搜索skybox。(三)Point(泛光灯)(2) Bias:偏移效果。
2024-07-11 14:57:25
232
原创 创建地形——笔记
(8) 树:选中Terrain。选中Tree,点击Add Tree,在弹出界面选择准备好的预制体,点击add。依次点击Nomal Map和Mask Map右侧的Slect,增加法线贴图(紫)和遮罩(蓝)贴图。(1) 选中地形、设置整体地形的高度。(5) 编辑沙土层——选中Inspector中的新建沙土层,出现编辑面板。(7) 调节光滑度和笔刷后,开始在Scene中绘制。(3) 选中Terrain,绘制贴图。(6) 同样的方法创建草地。(9) 更改密度、高度等。(4) 新建一个沙土层。
2024-07-11 09:22:43
151
原创 密室逃脱——收集版修改测试
(2) 打开Prefabs 文件夹,将 Fixed Joystick 拖放到Hierarchy面板的Canvas下,调整大小和位置。(2) 选中导入的图片,然后在Inspector面板中将Texture Type设置为Sprite (2D and UI)(3) 编辑PointOfView预制体,删除Observer.cs组件,添加CollectedItems.cs组件。(2) 删除Ghost (3)的PointOfView子物体,在该位置添加ExitEventTriggers子物体。
2024-07-07 11:09:30
479
原创 构造函数的小白理解
答:是的,构造函数的主要作用之一就是定义当创建类的对象时应该如何初始化对象的状态。它规定了新创建的对象应该包含哪些字段(属性),并且这些字段的初始值是如何通过构造函数的参数来设置的。所以,构造函数确实可以看作是规定了由它创建的对象的“格式”或“组成”。循环的条件不再满足,循环就会结束,此时也可以选择在循环体外打印一条消息,说明已经读取完了文件的所有内容。用于初始化类的字段,规定了当创建类的实例时应该如何设置字段的值。,那么说明已经读取到了文件的末尾,没有更多的行可以读取了。,那么说明读取到了新的一行内容;
2024-06-28 21:35:44
411
原创 组织代码和脚本
例如,使用驼峰命名法(camelCase)命名变量和方法,使用Pascal命名法(PascalCase)命名类和接口。:为代码添加注释和文档可以帮助其他人(或未来的你)理解你的代码是如何工作的。例如,如果一个脚本需要访问另一个脚本的数据,最好通过公共接口或事件系统来实现,而不是直接引用另一个脚本的实例。:每个脚本或类应该只有一个明确的职责。例如,一个脚本可能负责处理UI的显示和交互,而另一个脚本则负责处理游戏逻辑。:对于与特定游戏对象无关的功能(如数学运算、字符串处理、日志记录等),可以创建静态工具类。
2024-06-28 10:02:44
252
原创 认识Unity中的音效
对象存储了一段声音,可用于播放音效、背景音乐和语音对白等。是负责读取这个容器里的音频数据并将其播放出来的实体。三、Audio Listener:音频侦听器。一、Audio Clip:音频片段。参数指示该音频片段是否是立体混响声。二、Audio Source:音源。的输入,并通过计算机扬声器播放声音。相当于发出声音的物体或设备。相当于一个存有音频文件的容器。就会开始播放该音频剪辑。充当类似麦克风的设备。接收来自场景中任何给定。
2024-06-20 16:10:05
337
原创 设置巡逻路径的方法
物体被标记为Navigation Static后,Unity会在Bake过程中将这些物体的几何信息纳入导航网格中,从而使得游戏中的角色或其他可移动对象能够知道哪些区域是可行走的,哪些是不可行走的。(4) 可以根据需要,取消勾选Level的子物体(如天花板、地板下面一层的Plane等)上的Static,从而精准控制需要巡逻的位置。(2) 选中Hierarchy面板上的Level,在它的Inspector面板右侧,勾选Static后,选择yes。新的后面学会了再说)的目标位置设置为上一步获取到的路径点位置。
2024-06-20 11:56:51
679
原创 密室逃脱练习
(1) 打开Assets-UnityTechnologies-Animation-Animators,Create-Animation-Controller,命名为JohnLemon。(1) 打开Assets-UnityTechnologies-Animation-Animation,选中John@Idle,选中Animation播放。(2) 打开Assets-UnityTechnologies-Animation-Animation,选中John@Walk,选中Animation播放。
2024-06-18 19:51:36
523
原创 镜头跟踪的两种方法
(1) 此时,VCM自动与主摄像机关联(主摄像机无法通过拖动改变位置),只能通过VCM调整摄像角度。Look At:勾选时可设定为一直朝向某物体(本工程不设定。设定后的参数在Aim)(2) 给Main Camera添加CamraCtrller.cs组件。(1) 原理:使球与摄像机保持固定的角度和距离。Follow:设定参数在body。(3) 回到Unity赋值。
2024-06-18 19:51:06
285
原创 设置角色运动的动画
(1) 打开Assets-UnityTechnologies-Animation-Animators,Create-Animation-Controller,命名为JohnLemon。(3) 依次将Assets-UnityTechnologies-Animation-Animation中的John@Idle和John@Walk拖放到Base Layer窗口中。当将Apply Root Motion设置为true时,角色将根据动画中的根运动实际移动,而不是完全依靠程序代码来控制角色的运动。
2024-06-18 19:42:45
375
原创 Mathf.Approximately
比较两个关键帧的属性是否近似相等,以确定是否需要进行动画的平滑的过渡。用于判断两个浮点数是否“近似相等”忽略物理模拟中的一些微小变化。忽视游戏中角色的轻微移动。
2024-06-18 15:02:04
219
原创 游戏中插入音效
(2) 选中bgAudio,在AudioClip中选择导入的背景音乐。(1) Create Empty,名字自取,如:bgAudio。(2) 选中 bgAudio,勾选开始运行就播放、循环播放。调节音量(volume)(5) 在按钮或其他事件中调用OnClickbgAudioPlay()方法。(1) 将背景音乐 bgAudio 拖放到Hierarchy面板。(3) 给bgAudio添加GameAudio.cs 组件。(2) 取消勾选Play On Awake。(2) 取消勾选Play On Awake。
2024-06-17 11:00:31
374
原创 滚球游戏笔记
颜色:透明度A(0~255) 红R(0~255) 绿G(0~255) 蓝B(0~255)(2) 创建小球:3D Object-sphere,命名为Player,PositionY= 0.5。(1) UI-Text,命名ScoreText。(1) UI-Text,命名WinText。(1) 原理:施加一个力(大小、方向、作用点)通过Input.GetAxes() 方法获取Axes中的名称。(1) 创建地面:3D Object-Plane,命名为Ground。
2024-06-16 21:18:27
975
原创 Unity的三种Update方法
(3) 适用:处理实时输入、移动和玩家交互等通常需要每一帧更新的操作。(2) 作用:用于处理相机的跟随、需要依赖于其他对象更新后再进行的操作。(2) 作用:用于处理物理引擎的计算,例如刚体的移动和碰撞检测。(1) 调用时机:在所有的Update方法执行完毕后被调用。(1) 调用时机:在固定的时间间隔内,而不是每一帧被调用。(3) 特点:能更准确地处理物理模拟,并减少帧率的影响。(2) 作用:用于处理游戏中的逻辑和更新对象的状态。(3) 特点:是对象更新完毕后执行的操作。(1) 调用时机:在每一帧被调用。
2024-06-16 18:55:22
398
原创 Time.deltaTime
(1) Time.deltaTime * speed:使物体每帧移动的距离保持一致,从而实现匀速或平滑的移动。(2) Time.deltaTime * 预设的动画速度:控制每帧动画的播放进度,从而实现稳定的播放速度。(2) 无论设备性能如何,动画都能按照预期速度进行播放,避免出现在不同设备上时快时慢的情况。(1) 在不同设备上运行时,无论帧率是多少,物体的移动速度都会保持一致。(1) 确保物体在不同设备上以相同的速度移动。(2) 确保动画在不同设备上以相同的速度播放。常用于计算与帧率无关的移动和动画效果。
2024-06-16 15:25:10
222
原创 Unity 3D 物体的Inspector面板
3、Mesh Renderer:物体渲染(物体的衣服)1、Transform:位置、旋转、大小。2、Mesh Filter:物体的形状。4、Collider:碰撞体。
2024-06-16 11:33:07
957
原创 字符串数组——传递文本的不同方法实例
(3) 初始化的方法:类型+[] + 变量名 = new string[3];(1) string:类型;(2) 数组需要初始化之后 才能使用。(4) 调用字符串的数据的实例。(5) 优化后的方法。
2024-06-13 20:54:40
244
原创 实例化游戏物体的实例(生成游戏物体)
(3) 选中foodArea,按住Alt,选择放大到和Canvas大小相同,添加一个名为“FoodArea”的标签。(1) 新建Test.cs,挂载到Hierarchy界面上的物体上,如:Canvas上。(2) 回到Unity,选中Button,添加Event Trigger组件,并赋值。(3) 将TestBtn中的文字和按钮拆分,并设置为nodesPrefab的子物体。这条射线起点是摄像机的位置,它连到被点击的屏幕的位置并发射到场景中的无限远。(2) Create Empty,名字自取。
2024-06-13 15:35:46
1002
原创 Unity中获取数据的方法
方法或构造函数中一次性获取组件,并将其存储在一个私有变量中,然后在后续的方法中重复使用这个变量。2、不要在Update或其他高频调用的方法中频繁地使用GetComponent。如某个键是否被按下,鼠标的位置,触摸的坐标等。用于从游戏对象上获取特定的组件,以便在脚本中与该组件交互或修改其属性。常用于检测和处理用户的输入事件,如键盘按键、鼠标点击、触摸滑动等。因此,在使用返回的组件之前,最好先检查它是否为。用于处理用户输入(如键盘、鼠标、触摸等)的静态类。时,如果游戏对象上没有该类型的组件,它将返回。
2024-06-13 12:45:25
401
原创 激活和禁用Hierarchy面板上的物体
(1) 在HIerarchy上添加待隐藏/显示的物体,名字自取。如:endImage。(1) 新建空物体或Canvas,添加 HideGameObject.cs 组件。(3) 在HIerarchy上添加按钮,名字自取。(2) 在Inspector面板,该物体的名称前取消勾选(隐藏)(4) 在Inspector面板,该按钮的名称前取消勾选(隐藏)
2024-06-10 19:18:56
296
原创 逻辑取反操作——游戏暂停
1、作用切换一个布尔值(bool)的状态简化代码并减少冗余2、解释bool isPlaying = true; // 假设游戏当前正在进行中// 玩家点击了暂停按钮isPlaying = !isPlaying; // 通过逻辑取反操作切换isPlaying的状态// 现在isPlaying的值是false,表示游戏已暂停3、实例public void Pause(){ isPause = !isPause;//改变当前isPause的值(与当前的值相反)
2024-06-08 11:04:27
117
原创 获取物体的边界且在范围内任取一点
1、Create Empty,名字自取。如:testArea。4、给testArea添加boundary.cs。2、给testArea添加Collider。一、获取物体的边界且在范围内任取一点。3、编辑Collider大小。5、回到Unity赋值。二、获取物体的世界坐标。
2024-06-05 20:47:45
186
原创 用A、S、D、W控制物体移动的两种方法
(3) 通过代码声明变量,把变量放在Unity面板中进行修改。(2) 通过代码直接设置Time.timeScale。(2) 一格一格地移动(慢动作)——如贪吃蛇的移动。(2) 返回Unity,设置Step的值。(1) 略放慢且平滑移动。
2024-06-04 20:43:34
289
原创 通过按钮由一个场景跳转到另一个场景
6、回到Unity,选择Button-On Click,添加附加脚本的物体,选择ScenesLoader.LoadScene2。5、创建SceneLoader.cs,并把它附加到一个物体上(任何物体或者Canvas都可以)(2) 点击 File-Build Settings-Add Open Scenes。1、创建两个场景,名字自取。3、把两个场景都添加到Build Settings中。4、在Start场景添加按钮:UI-Button…(1) 分别打开两个场景。
2024-06-02 18:41:51
152
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人