Unity学习笔记-Unity了解,安装,简单配置(一)
Unity 是什么?
Unity 是一款广受欢迎的跨平台游戏开发引擎,由 Unity Technologies 公司开发并推出。它以强大的功能和易用性,在游戏开发领域占据着举足轻重的地位,甚至可以说,它改变了游戏开发的格局。凭借其出色的跨平台支持能力,开发者只需编写一次代码,就能将游戏部署到多个平台上,包括移动设备、PC、游戏机和 Web 等,大大节省了开发时间和成本 。
你可能玩过《王者荣耀》《原神》《纪念碑谷》这些知名游戏,它们背后都有 Unity 的身影。这些游戏凭借精美的画面、丰富的玩法和流畅的体验,收获了无数玩家的喜爱。而 Unity 作为它们的开发引擎,功不可没。这也让越来越多的开发者看到了 Unity 的潜力,纷纷投身于 Unity 游戏开发的学习中。
前期准备
安装 Unity
在开始使用 Unity 进行游戏开发之前,首先要在你的电脑上安装 Unity 引擎。Unity 官方提供了一个名为 Unity Hub 的工具,它能帮助我们轻松管理 Unity 的版本,以及创建和管理项目。下面,我将详细介绍如何通过 Unity Hub 来安装 Unity 引擎。
- 下载 Unity Hub:打开你的浏览器,访问 Unity 官方网站(Unity中国官网 - 实时内容开发平台 | 3D、2D、VR & AR可视化)。在网站首页中,找到并点击 “下载 Unity” 按钮,进入下载页面。在下载页面中,选择 “下载 Unity Hub”,根据你的操作系统选择对应的版本(Windows 或 Mac)进行下载。下载完成后,运行安装程序,按照提示完成 Unity Hub 的安装。
- 登录 Unity 账号:安装完成后,启动 Unity Hub。首次运行时,你需要登录 Unity 账号。如果你还没有账号,可以点击 “创建账户” 进行注册。登录成功后,你将看到 Unity Hub 的主界面。
- 安装 Unity 引擎:在 Unity Hub 主界面中,点击左侧菜单栏中的 “安装” 选项。然后,点击右上角的 “添加” 按钮,在弹出的窗口中,你可以选择要安装的 Unity 版本。通常,建议选择带有 “LTS”(长期支持)标识的版本,因为这些版本更加稳定,适合初学者和长期项目开发。
- 选择安装组件:在选择好 Unity 版本后,点击 “下一步”。在这一步,你可以选择要安装的组件。Unity 提供了丰富的组件,以满足不同的开发需求。例如:
-
- 平台支持组件:如果你打算开发移动游戏,那么需要勾选 “Android Build Support”(安卓平台支持)和 “iOS Build Support”(iOS 平台支持);如果想开发网页游戏,可以勾选 “WebGL Build Support”。
-
- 开发工具:“Visual Studio Community 2019” 是 Unity 官方推荐的代码编辑器,用于编写 C# 脚本,强烈建议勾选。当然,如果你已经安装了其他编辑器,也可以在安装完成后再进行设置。
-
- 语言支持:如果你希望 Unity 界面显示为中文,可以在 “Language Packs” 中勾选 “Chinese (Simplified)”。


- 选择安装位置:选择好所需组件后,点击 “下一步”,你可以选择 Unity 引擎的安装位置。建议选择一个磁盘空间充足的目录,避免安装过程中出现空间不足的问题。设置好安装位置后,点击 “安装” 按钮,Unity Hub 将开始下载并安装 Unity 引擎及你选择的组件。这个过程可能需要一些时间,具体取决于你的网络速度和电脑性能,请耐心等待。
- 安装完成:安装完成后,在 Unity Hub 的 “安装” 页面中,你将看到刚刚安装的 Unity 版本,其状态显示为 “已安装”。至此,Unity 引擎的安装就完成了。

开发工具
工欲善其事,必先利其器。在 Unity 开发中,选择一款合适的集成开发环境(IDE)可以大大提高开发效率。虽然 Unity 自带了 MonoDevelop 编辑器,但功能相对有限。目前,最受欢迎的 Unity 开发 IDE 是 Visual Studio,它功能强大,与 Unity 的集成度也非常高。下面,我将介绍如何安装和配置 Visual Studio,以及它与 Unity 的集成使用。
- 安装 Visual Studio:访问 Microsoft 官方网站(https://visualstudio.microsoft.com/),下载 Visual Studio 安装程序。在下载页面中,选择 “Community” 版本(社区版,免费且功能足够强大,适合大多数开发者),点击 “下载” 按钮。下载完成后,运行安装程序。在安装向导中,选择 “使用 C++ 的桌面开发” 和 “使用 Unity 的游戏开发” 这两个工作负载。这两个工作负载包含了开发 Unity 项目所需的各种工具和库。此外,你还可以根据自己的需求选择其他组件,如 “通用 Windows 平台开发” 等。选择好工作负载和组件后,点击 “安装” 按钮,等待安装完成。这个过程可能需要较长时间,因为需要下载和安装大量的文件。
- 配置 Visual Studio 与 Unity 集成:安装完成后,打开 Unity Hub,创建一个新的 Unity 项目,或者打开一个已有的项目。在 Unity 编辑器中,点击菜单栏中的 “Edit”->“Preferences”(编辑 -> 首选项),打开首选项窗口。在首选项窗口中,选择 “External Tools”(外部工具)选项卡。在 “External Script Editor”(外部脚本编辑器)下拉列表中,选择你刚刚安装的 Visual Studio 版本。这样,当你在 Unity 中双击 C# 脚本文件时,就会自动在 Visual Studio 中打开该文件进行编辑。
- 在 Visual Studio 中开发:配置完成后,你就可以在 Visual Studio 中进行 Unity 项目的开发了。在 Visual Studio 中,你可以享受到代码智能提示、语法检查、调试等强大功能。当你在 Unity 中运行项目时,如果出现错误,你可以直接在 Visual Studio 中进行调试,方便快捷地定位和解决问题。例如,你可以在 Visual Studio 中设置断点,当程序运行到断点处时,会暂停执行,你可以查看变量的值、调用堆栈等信息,帮助你分析问题。
Unity 界面初体验
窗口布局

当你首次打开 Unity 编辑器,映入眼帘的是一个功能齐全、布局紧凑的工作界面。这个界面就像是一个大型的游戏开发工厂,各个窗口就像是不同的生产车间,各司其职,共同协作完成游戏开发的各项任务。下面,我将为你详细介绍 Unity 编辑器中几个重要的窗口。
- Hierarchy(层级)窗口:Hierarchy 窗口就像是一个场景的 “花名册”,它以树状结构列出了当前场景中所有的游戏对象。在这里,你可以清晰地看到每个游戏对象的层级关系,以及它们之间的父子关联。例如,在一个简单的游戏场景中,你可能有一个 “Player” 游戏对象作为父对象,它下面又包含了 “Head”“Body”“Arms”“Legs” 等子对象,这些子对象继承了父对象的一些属性,同时又有自己独特的属性 。通过 Hierarchy 窗口,你可以方便地对游戏对象进行创建、选择、删除、移动层级等操作。比如,你可以将一个游戏对象拖动到另一个游戏对象上,使其成为子对象;也可以通过右键菜单创建新的游戏对象,或者删除不需要的游戏对象。
- Project(项目)窗口:Project 窗口是你存放项目资源的 “仓库”,它显示了项目中所有的文件和文件夹,包括脚本、模型、材质、纹理、音频等各种资源。你可以在这里对资源进行管理,如导入、导出、创建、删除、重命名等。例如,当你从外部获取了一些精美的 3D 模型资源,你可以将它们导入到 Project 窗口中,然后根据项目的组织结构,将它们放置到合适的文件夹中,方便后续的使用。在 Project 窗口中,你还可以通过搜索栏快速查找所需的资源,提高开发效率。
- Inspector(检视)窗口:Inspector 窗口是游戏对象的 “属性展示台”,当你在 Hierarchy 窗口或 Scene 窗口中选择一个游戏对象时,Inspector 窗口会立即显示该游戏对象的所有组件及其属性。你可以在这里对组件的属性进行编辑和调整,从而改变游戏对象的外观和行为。比如,对于一个 “Cube” 游戏对象,你可以在 Inspector 窗口中修改它的 Transform 组件的位置、旋转和缩放属性,使其在场景中呈现出不同的姿态;还可以修改它的 Mesh Renderer 组件的材质属性,为它换上不同的外观材质 。此外,你还可以通过 Inspector 窗口添加或删除游戏对象的组件,以扩展游戏对象的功能。
- Scene(场景)窗口:Scene 窗口是你的 “创作舞台”,在这里你可以直接对游戏场景进行编辑和布置。你可以在 Scene 窗口中创建、选择、移动、旋转和缩放游戏对象,就像在现实世界中搭建一个场景一样。同时,你还可以使用各种工具,如平移、旋转、缩放工具,来精确地调整游戏对象的位置和姿态。例如,你可以使用移动工具将一个 “Enemy” 游戏对象放置到合适的位置,使用旋转工具调整它的朝向,使用缩放工具改变它的大小。此外,Scene 窗口还提供了多种视图模式,如透视视图、正交视图等,方便你从不同的角度观察和编辑场景。
- Game(游戏)窗口:Game 窗口是游戏的 “预览屏幕”,它展示了游戏在运行时的实际效果,让你可以实时查看游戏的画面、交互和逻辑是否符合预期。在 Game 窗口中,你可以点击播放按钮来运行游戏,模拟玩家的操作,检查游戏的各项功能是否正常。例如,你可以在 Game 窗口中测试角色的移动、跳跃、攻击等动作是否流畅,碰撞检测是否准确,以及各种游戏事件是否能够正确触发。通过 Game 窗口的预览,你可以及时发现并解决游戏中存在的问题,确保游戏的质量。
基本操作
在 Unity 中,熟练掌握一些基本操作是进行游戏开发的基础。下面,我将介绍在 Unity 中创建、选择、移动、旋转和缩放游戏对象的基本操作,以及一些常用的快捷键,帮助你提高开发效率。
- 创建游戏对象:在 Unity 中创建游戏对象非常简单,你可以通过多种方式进行创建。一种常见的方式是在 Hierarchy 窗口中右键单击,然后从弹出的菜单中选择 “Create Empty”(创建空对象),或者选择其他预设的游戏对象类型,如 “Cube”(立方体)、“Sphere”(球体)、“Plane”(平面)等。另外,你也可以通过菜单栏中的 “GameObject”->“Create Empty” 或 “GameObject”->“3D Object” 来创建游戏对象 。创建好游戏对象后,你可以在 Inspector 窗口中对其进行属性设置和组件添加。
- 选择游戏对象:要对游戏对象进行操作,首先需要选择它。在 Hierarchy 窗口中,你可以直接点击游戏对象的名称来选择它;在 Scene 窗口中,你可以使用鼠标左键点击游戏对象来选择它。如果要选择多个游戏对象,可以按住 “Ctrl” 键(Windows 系统)或 “Command” 键(Mac 系统),然后依次点击要选择的游戏对象;也可以通过拖动鼠标框选多个游戏对象。当你选择一个游戏对象时,它会在 Hierarchy 窗口和 Scene 窗口中以高亮显示,方便你进行后续操作。
- 移动游戏对象:选择游戏对象后,你可以使用工具栏中的移动工具(快捷键为 “W”)来移动它。在 Scene 窗口中,点击移动工具后,游戏对象周围会出现一个带有坐标轴的移动手柄,你可以通过拖动坐标轴来沿相应方向移动游戏对象。例如,拖动红色的 X 轴可以沿 X 轴方向移动游戏对象,拖动绿色的 Y 轴可以沿 Y 轴方向移动游戏对象,拖动蓝色的 Z 轴可以沿 Z 轴方向移动游戏对象。此外,你还可以在 Inspector 窗口中直接修改游戏对象 Transform 组件的 Position 属性来精确设置其位置。
- 旋转游戏对象:使用旋转工具(快捷键为 “E”)可以旋转游戏对象。点击旋转工具后,游戏对象周围会出现一个旋转手柄,手柄上有三个不同颜色的旋转环,分别对应 X、Y、Z 三个坐标轴。你可以通过拖动旋转环来绕相应坐标轴旋转游戏对象。例如,拖动红色的旋转环可以绕 X 轴旋转游戏对象,拖动绿色的旋转环可以绕 Y 轴旋转游戏对象,拖动蓝色的旋转环可以绕 Z 轴旋转游戏对象。同样,你也可以在 Inspector 窗口中修改游戏对象 Transform 组件的 Rotation 属性来精确设置其旋转角度。
- 缩放游戏对象:缩放工具(快捷键为 “R”)用于缩放游戏对象的大小。点击缩放工具后,游戏对象周围会出现一个缩放手柄,手柄上有三个不同颜色的缩放箭头,分别对应 X、Y、Z 三个坐标轴。你可以通过拖动缩放箭头来沿相应方向缩放游戏对象。例如,拖动红色的缩放箭头可以沿 X 轴方向缩放游戏对象,拖动绿色的缩放箭头可以沿 Y 轴方向缩放游戏对象,拖动蓝色的缩放箭头可以沿 Z 轴方向缩放游戏对象。在 Inspector 窗口中,你可以修改游戏对象 Transform 组件的 Scale 属性来精确设置其缩放比例。
- 常用快捷键:除了上述工具对应的快捷键外,Unity 还有许多其他常用的快捷键,熟练使用这些快捷键可以大大提高你的工作效率。例如:
-
- Ctrl + Z(Windows 系统)或Command + Z(Mac 系统):撤销上一步操作。
-
- Ctrl + Y(Windows 系统)或Command + Shift + Z(Mac 系统):重做上一步操作。
-
- Ctrl + S(Windows 系统)或Command + S(Mac 系统):保存当前场景。
-
- F:将选中的游戏对象居中显示在 Scene 窗口中,方便快速定位。
-
- Alt + 鼠标左键:在 Scene 窗口中旋转视图,以便从不同角度观察场景。
-
- Alt + 鼠标右键:在 Scene 窗口中缩放视图,调整观察视角的远近。
-
- Alt + 鼠标中键:在 Scene 窗口中平移视图,移动观察视角的位置。
游戏对象与组件
游戏对象
在 Unity 的游戏开发世界里,游戏对象(GameObject)是构建游戏世界的基本元素,就像是现实世界中的各种物体一样,它们构成了游戏场景的方方面面。简单来说,游戏对象是一个可以包含各种组件的容器,这些组件赋予了游戏对象不同的功能和行为。你可以把游戏对象想象成一个 “万能的载体”,通过挂载不同的组件,它可以摇身一变成为游戏中的角色、道具、场景物体等。
在一款角色扮演游戏中,玩家操控的角色就是一个典型的游戏对象。这个角色游戏对象可能包含了用于控制其位置、旋转和缩放的 Transform 组件,用于显示模型外观的 Mesh Renderer 组件,用于实现物理效果(如重力、碰撞等)的 Rigidbody 组件,以及用于检测与其他物体碰撞的 Collider 组件等。这些组件协同工作,使得角色能够在游戏世界中自由移动、与环境交互,展现出丰富的行为和动作。
再比如,游戏中的一把宝剑作为道具,也是一个游戏对象。它可能包含了 Mesh Renderer 组件来展示宝剑的外观,Collider 组件用于检测玩家是否拾取到它,以及可能还有一个自定义的脚本组件,用于实现宝剑的特殊功能,如攻击特效、属性加成等。
场景中的一座城堡、一棵大树、一块石头等,也都是游戏对象。它们通过各自的组件来呈现出独特的外观和功能,共同构建出一个丰富多彩、栩栩如生的游戏世界。可以说,游戏对象是 Unity 游戏开发的基础,理解和掌握游戏对象的创建、管理和使用,是成为一名优秀游戏开发者的关键一步。
组件系统
组件(Component)是 Unity 中实现游戏功能的核心机制,它为游戏对象赋予了各种具体的行为和属性,就像是给游戏对象安装了不同的 “功能模块”。每个游戏对象都可以挂载多个组件,通过不同组件的组合,我们可以实现各种复杂的游戏逻辑和效果。
在 Unity 中,有许多常用的组件,下面为你介绍其中几个重要的组件:
- Transform 组件:这是每个游戏对象都必备的基础组件,它用于定义游戏对象在场景中的位置(Position)、旋转(Rotation)和缩放(Scale)。通过修改 Transform 组件的属性,我们可以轻松地实现游戏对象的移动、旋转和大小变化等操作。例如,在一个赛车游戏中,我们可以通过改变赛车游戏对象的 Transform 组件的位置属性,来实现赛车在赛道上的行驶;通过修改旋转属性,控制赛车的转向。
- Rigidbody 组件:Rigidbody 组件使游戏对象能够参与物理模拟,让游戏对象受到重力、力的作用,以及与其他具有碰撞体的游戏对象发生碰撞反应,从而实现更加真实的物理效果。比如,在一个球类游戏中,为球添加 Rigidbody 组件后,球就会在重力的作用下自然下落,当它与地面或其他物体碰撞时,会根据物理规则反弹或滚动 。
- Collider 组件:Collider 组件用于定义游戏对象的碰撞体,用于检测游戏对象之间的碰撞和触发事件。常见的 Collider 组件有 Box Collider(盒碰撞体)、Sphere Collider(球碰撞体)、Capsule Collider(胶囊碰撞体)等,不同形状的碰撞体适用于不同形状的游戏对象。在一款射击游戏中,我们可以为敌人添加 Collider 组件,当玩家发射的子弹与敌人的碰撞体发生碰撞时,就可以触发伤害计算等逻辑。
添加组件的方法很简单,在 Hierarchy 窗口中选择需要添加组件的游戏对象,然后在 Inspector 窗口中点击 “Add Component” 按钮,在弹出的菜单中选择你需要的组件即可。例如,要为一个游戏对象添加 Rigidbody 组件,只需在 “Add Component” 菜单中搜索 “Rigidbody”,然后点击选择它,该游戏对象就会立即拥有 Rigidbody 组件及其默认属性。
如果某个组件不再需要,也可以很方便地移除它。在 Inspector 窗口中,找到要移除的组件,点击组件右上角的小齿轮图标,在弹出的菜单中选择 “Remove Component” 即可。不过需要注意的是,移除某些关键组件可能会导致游戏对象的功能异常,所以在移除组件时要谨慎操作。
在游戏开发过程中,我们还经常需要通过代码来获取和操作组件,以实现更加灵活和动态的功能。例如,在 C# 脚本中,可以使用以下代码获取键盘输入调整组件速度:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class moveBat : MonoBehaviour
{public Rigidbody2D rightBot;public Rigidbody2D leftBot;// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){if (Input.GetKey(KeyCode.UpArrow)){rightBot.velocity = new Vector2(0f, 3);}else if (Input.GetKey(KeyCode.DownArrow)){rightBot.velocity = new Vector2(0f, -3);}else {rightBot.velocity = new Vector2(0f, 0);}}
}
通过对组件的灵活运用,我们可以为游戏对象赋予各种各样的功能,打造出丰富多彩、充满创意的游戏世界。掌握组件系统是 Unity 游戏开发的核心技能之一,随着学习的深入,你会发现它的强大之处。
场景搭建基础
创建场景
场景是游戏的舞台,所有的游戏内容都在场景中呈现。在 Unity 中创建场景十分简单,你可以通过以下几种方式:
- 使用菜单创建:点击菜单栏中的 “File”(文件),然后选择 “New Scene”(新建场景),或者直接使用快捷键 “Ctrl + N”(Windows 系统)/“Command + N”(Mac 系统),即可创建一个新的空白场景。
- 从模板创建:在新建场景时,会弹出 “New Scene” 对话框,这里提供了一些预设的场景模板,如 “3D”“2D”“Lightweight RP” 等。你可以根据项目的类型选择合适的模板,这些模板会为你初始化一些基本的场景设置和资源,节省你的开发时间。例如,选择 “3D” 模板,会创建一个带有默认光照和摄像机的 3D 场景。
- 在 Project 窗口创建:在 Project 窗口中,右键点击你想要存放场景的文件夹,选择 “Create”(创建)->“Scene”(场景),Unity 会在该文件夹下创建一个新的场景文件,并自动为其命名,你可以根据需要修改场景的名称。
创建好场景后,记得及时保存。点击 “File”->“Save Scene”(保存场景),或使用快捷键 “Ctrl + S”(Windows 系统)/“Command + S”(Mac 系统),选择保存的路径和文件名即可。如果你想加载已有的场景,在 Project 窗口中找到对应的场景文件,双击即可打开。
添加物体
有了场景之后,就可以往里面添加各种游戏物体了。在 Unity 中,添加基本 3D 物体的方法如下:
- 在 Hierarchy 窗口添加:在 Hierarchy 窗口中右键单击,在弹出的菜单中选择 “3D Object”(3D 物体),然后可以选择你想要添加的物体类型,如 “Cube”(立方体)、“Sphere”(球体)、“Cylinder”(圆柱体)、“Plane”(平面)等。例如,选择 “Cube”,一个立方体就会出现在场景中,默认位于坐标原点 (0, 0, 0)。
- 使用菜单栏添加:点击菜单栏中的 “GameObject”(游戏对象),选择 “3D Object”,同样可以选择添加各种基本 3D 物体。
除了这些基本的 3D 物体,我们还经常需要导入外部模型来丰富游戏场景。以导入 FBX 格式的模型为例,导入步骤如下:
- 准备模型文件:确保你已经拥有外部模型的 FBX 文件,这个文件可以是你自己使用 3D 建模软件(如 3ds Max、Maya、Blender 等)创建并导出的,也可以是从网上下载的。
- 导入模型:在 Project 窗口中,右键点击空白处,选择 “Import New Asset”(导入新资源),然后在弹出的文件浏览器中找到你的 FBX 模型文件,选中并点击 “Open”(打开),Unity 会自动导入模型及其相关的材质、纹理等资源。
- 添加到场景:导入完成后,在 Project 窗口中找到刚刚导入的模型资源,将其直接拖拽到 Hierarchy 窗口或 Scene 窗口中,模型就会出现在场景中了。你可以像操作其他游戏物体一样,对导入的模型进行位置、旋转和缩放等调整。
布置场景
当场景中有了多个物体后,就需要对它们进行布置,使其构成一个合理的游戏场景。布置场景主要涉及以下几个操作:
- 调整位置:选中需要调整位置的物体,然后点击工具栏中的移动工具(快捷键 “W”),在 Scene 窗口中,通过拖动物体上的坐标轴手柄,可以沿相应的坐标轴方向移动该物体。例如,拖动红色的 X 轴手柄,可以使物体沿 X 轴方向移动;拖动绿色的 Y 轴手柄,物体则沿 Y 轴方向移动;拖动蓝色的 Z 轴手柄,物体沿 Z 轴方向移动。你也可以在 Inspector 窗口中,直接修改物体 Transform 组件的 Position 属性值,来精确设置物体的位置坐标。
- 调整旋转:点击工具栏中的旋转工具(快捷键 “E”),物体周围会出现旋转手柄,通过拖动不同颜色的旋转环,可以绕相应的坐标轴旋转物体。拖动红色的旋转环,物体绕 X 轴旋转;拖动绿色的旋转环,物体绕 Y 轴旋转;拖动蓝色的旋转环,物体绕 Z 轴旋转。同样,在 Inspector 窗口中,修改 Transform 组件的 Rotation 属性值,也能精确控制物体的旋转角度。
- 调整缩放:使用缩放工具(快捷键 “R”),可以改变物体的大小。点击缩放工具后,物体周围会出现缩放手柄,拖动不同颜色的缩放箭头,可以沿相应的坐标轴方向缩放物体。拖动红色的缩放箭头,物体在 X 轴方向上缩放;拖动绿色的缩放箭头,物体在 Y 轴方向上缩放;拖动蓝色的缩放箭头,物体在 Z 轴方向上缩放。在 Inspector 窗口中,通过修改 Transform 组件的 Scale 属性值,可以按比例缩放物体。
- 设置层级关系:在 Hierarchy 窗口中,通过拖动一个物体到另一个物体上,可以建立父子层级关系。父物体的变换(位置、旋转、缩放)会影响子物体,而子物体的变换不会影响父物体。例如,在一个汽车模型中,车轮可以作为子物体,挂载到车身这个父物体上,当车身移动时,车轮也会跟着一起移动。设置合理的层级关系,有助于组织和管理复杂的场景结构 。
通过以上操作,你可以将各种游戏物体布置在场景中,构建出一个简单的游戏场景。例如,创建一个简单的室外场景,在地面(Plane)上放置一些树木(导入的外部模型)、石头(Cube),再添加一个角色(导入的模型),通过调整它们的位置、旋转和缩放,使其看起来更加自然和协调。
脚本编程入门
认识脚本
在 Unity 的游戏开发世界里,脚本就像是游戏的 “大脑”,它赋予了游戏对象丰富的行为和交互能力,是实现各种游戏逻辑的关键所在。简单来说,脚本就是一段代码,它可以被附加到游戏对象上,通过定义各种规则和行为,让游戏对象能够按照我们的设想进行活动。比如,控制角色的移动、跳跃、攻击,实现敌人的 AI 逻辑,管理游戏的场景切换和用户界面交互等,这些都离不开脚本的支持。
Unity 支持多种脚本语言,其中最常用的是 C#。C# 是一种现代的、类型安全的、面向对象的编程语言,由微软开发,作为.NET 框架的一部分。它具有简洁、高效、功能强大等特点,与 Unity 引擎的集成度非常高,能够充分发挥 Unity 的各种功能。在 Unity 开发中,几乎所有的官方文档和教程都使用 C# 作为示例语言,这也使得 C# 成为了 Unity 开发者的首选语言 。
C# 语言拥有丰富的特性,如自动垃圾回收、泛型、委托和事件等,这些特性使得编写复杂的游戏逻辑变得更加容易和高效。例如,通过委托和事件机制,我们可以方便地实现游戏中各种对象之间的通信和交互,让游戏的各个部分能够协同工作。此外,C# 还拥有强大的开发环境,如 Visual Studio,它为开发者提供了代码智能提示、语法检查、调试等一系列强大的功能,大大提高了开发效率 。
在脚本编辑前最好设置脚本编辑工具

创建脚本
在 Unity 中创建 C# 脚本非常简单,下面我将详细介绍创建步骤:
- 在 Project 窗口中创建:在 Unity 编辑器的 Project 窗口中,找到你想要存放脚本的文件夹(如果没有合适的文件夹,可以右键点击空白处,选择 “Create”->“Folder” 创建一个新文件夹)。右键点击该文件夹,在弹出的菜单中选择 “Create”->“C# Script”,此时会在该文件夹下创建一个新的 C# 脚本文件,默认命名为 “NewBehaviourScript.cs”,你可以根据实际需求修改脚本的名称,比如将其命名为 “PlayerController.cs”,用于控制玩家角色的行为。
- 使用快捷键创建:你还可以使用快捷键来创建 C# 脚本。在 Project 窗口处于焦点状态时,按下 “Ctrl + Shift + C”(Windows 系统)或 “Command + Shift + C”(Mac 系统)组合键,同样会在当前选中的文件夹下创建一个新的 C# 脚本文件 。
创建好脚本后,双击脚本文件,它会在你默认的代码编辑器(如 Visual Studio)中打开。此时,你会看到脚本的基本结构:

这段代码中:
- using UnityEngine;和using System.Collections;是引用命名空间,UnityEngine命名空间包含了 Unity 引擎的核心类和接口,如游戏对象、组件、物理系统等;System.Collections命名空间则提供了用于处理集合的类和接口,比如数组、列表等 。
- public class PlayerController : MonoBehaviour定义了一个名为 “PlayerController” 的公共类,它继承自MonoBehaviour类。在 Unity 中,所有的脚本类都必须继承自MonoBehaviour类,这样才能与 Unity 引擎进行交互,获得 Unity 提供的各种功能和生命周期方法 。
- Start()方法在脚本初始化时被调用,并且只会调用一次,通常用于初始化变量、获取组件引用等操作。
- Update()方法在每帧更新时被调用,帧率越高,该方法被调用的次数就越多,常用于处理玩家输入、更新游戏对象的状态等操作 。
通过这个简单的示例,你可以初步了解如何在 Unity 的 C# 脚本中编写游戏逻辑,实现游戏对象的交互和行为控制 。随着学习的深入,你将能够编写更加复杂和丰富的游戏逻辑,创造出令人惊叹的游戏体验。
相关文章:
Unity学习笔记-Unity了解,安装,简单配置(一)
Unity 是什么? Unity 是一款广受欢迎的跨平台游戏开发引擎,由 Unity Technologies 公司开发并推出。它以强大的功能和易用性,在游戏开发领域占据着举足轻重的地位,甚至可以说,它改变了游戏开发的格局。凭借其出色的跨…...
LLaMA-Factory|微调大语言模型初探索(3),qlora微调deepseek记录
前言 上篇文章记录了使用lora微调llama-1b,微调成功,但是微调llama-8b显存爆炸,这次尝试使用qlora来尝试微调参数体量更大的大语言模型,看看64G显存的极限在哪里。 1.Why QLora? QLoRA 在模型加载阶段通过 4-bit 量化大幅减少了模型权重的显存占用。QLoRA 通过 反量化到 …...
手动配置 Yum 仓库
在我使用虚拟机,系统在尝试访问CentOS的镜像列表时遇到了网络问题,具体表现为无法解析mirrorlist.centos.org 于是手动配置yum仓库 备份现有的 repo 文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 创建新…...
JEEWMS cgFormBuildController.do 方法mobileForm存在SQL注入
一:登录扫描 JeeWMS是一款免费开源的仓库管理系统,支持3PL和厂内物流,涵盖订单管理,仓储管理,计费管理,现场作业,RFID,AGV等功能。本文介绍了系统的简介,功能,安装,截图和链接,适合仓储企业和开发者参考。厦门市灵鹿谷科技有限公司JEEWMS jeecgFormDemoController…...
【二分搜索 C/C++】洛谷 P1873 EKO / 砍树
2025 - 02 - 19 - 第 55 篇 Author: 郑龙浩 / 仟濹(CSND) 【二分搜索】 文章目录 洛谷 P1873 EKO / 砍树题目描述输入格式输出格式输入输出样例 #1输入 #1输出 #1 输入输出样例 #2输入 #2输出 #2 说明/提示题目中的部分变量思路代码 洛谷 P1873 EKO / 砍树 题目描述 伐木工人…...
python面试题整理
Python 如何处理异常? Python中,使用try 和 except 关键字来捕获和处理异常 try 块中放置可能会引发异常的代码,然后在except块中处理这些异常。 能补充一下finally的作用吗? finally 块中的代码无论是否发生异常都会执行…...
深度学习之图像回归(二)
前言 这篇文章主要是在图像回归(一)的基础上对该项目进行的优化。(一)主要是帮助迅速入门 理清一个深度学习项目的逻辑 这篇文章则主要注重在此基础上对于数据预处理和模型训练进行优化前者会通过涉及PCA主成分分析 特征选择 后…...
中文Build a Large Language Model (From Scratch) 免费获取全文
中文pdf下载地址:https://pan.baidu.com/s/1aq2aBcWt9vYagT2-HuxdWA?pwdlshj 提取码:lshj 原文、代码、视频项目地址:https://github.com/rasbt/LLMs-from-scratch 翻译工具:沉浸式翻译(https://app.immersivetrans…...
【鸿蒙开发】第四十四章 Map Kit(地图服务)
目录 1 Map Kit简介 1.1 场景介绍 2 开发准备 开通地图服务 3 创建地图 3.1 显示地图 3.1.1 接口说明 3.1.2 开发步骤 1、地图显示 2、设置地图属性 3、开启3D建筑图层 4、地图前后台切换 5、深色模式 3.2 切换地图类型 3.2.1 场景介绍 3.2.2 接…...
EasyExcel 自定义头信息导出
需求:需要在导出 excel时,合并单元格自定义头信息(动态生成),然后才是字段列表头即导出数据。 EasyExcel - 使用table去写入:https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write#%E4%BD%BF%E7%94%A8table%E…...
Angular 中获取 DOM 节点的几种方法
文章目录 1. 使用ViewChild获取单个 DOM 节点2. 使用ViewChildren获取多个 DOM 节点3. 使用ElementRef直接访问 DOM4. 使用Renderer2操作 DOM5. 总结 在 Angular 开发中,虽然框架鼓励我们通过组件和模板来操作 DOM,但在某些情况下,直接访问和…...
索引的优缺点与常见类型详解
索引是数据库优化的核心工具,但盲目使用可能适得其反。本文将系统梳理索引的缺点、常见类型及适用场景,助你避开常见陷阱。 一、索引的缺点 虽然索引能加速查询,但并非“免费午餐”,需警惕以下代价: 1. 存储空间开销…...
DeepSeek 提示词:定义、作用、分类与设计原则
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
ubuntu环境编译ffmepg支持nvidia显卡加速
文章目录 1. 安装NVIDIA驱动2. 安装CUDA&NV-CODEC2.1 安装CUDA2.2 安装NV-CODEC 3. 编译ffmpeg3.1 安装依赖3.2 下载源码安装依赖3.3 验证 4. 使用 1. 安装NVIDIA驱动 安装依赖包 sudo apt install -y ubuntu-drivers-common编辑 /etc/modprobe.d/blacklist-nouveau.conf 文…...
淘宝商品评论API调用教程:轻松获取用户评价数据(含测试Key)
在电商开发中,用户评价数据是优化产品和提升用户体验的重要依据。淘宝提供了商品评论API,方便开发者获取商品的用户评价信息。本文将详细介绍如何调用淘宝商品评论API,并附上测试Key供调试使用。 一、准备工作 注册淘宝开放平台账号 前往注册…...
边缘安全加速(Edge Security Acceleration)
边缘安全加速(Edge Security Acceleration,简称ESA)是一种通过将安全功能与网络边缘紧密结合来提升安全性和加速网络流量的技术。ESA的目标是将安全措施部署到接近用户或设备的地方,通常是在网络的边缘,而不是将所有流…...
SpringCould+vue3项目的后台用户管理的CURD【Taurus教育平台】
文章目录 一.SpringCouldvue3项目的后台用户管理的CURD【Taurus教育平台】 1.1 背景 二.用户列表(分页查询) 2.1 前端Vue3 (Vue3-Element-Admin)2.2 后端SpringCould 处理 三. 用户信息删除 3.1 前端Vue3 (Vue3-Eleme…...
ROS-相机话题-获取图像-颜色目标识别与定位-目标跟随-人脸检测
文章目录 相机话题获取图像颜色目标识别与定位目标跟随人脸检测 相机话题 启动仿真 roslaunch wpr_simulation wpb_stage_robocup.launch rostopic hz /kinect2/qhd/image_color_rect/camera/image_raw:原始的、未经处理的图像数据。 /camera/image_rectÿ…...
破解Docker镜像拉取难题:为Docker配置代理加速镜像拉取
为Docker配置代理加速镜像拉取 概述守护进程配置(推荐长期使用)Systemd环境变量配置(适合临时调整)其他 概述 为什么需要配置代理与镜像加速? 跨国网络限制:境外镜像仓库拉取速度慢或无法访问企业安全策略ÿ…...
细分数字货币钱包的不同种类
文章目录 一、中心化钱包1.1 中心化钱包架构1.2 中心化钱包业务细节流程 二、去中心化钱包(HD 钱包)2.1 去中心化钱包架构2.2 去中心化钱包细节业务流程 三、硬件钱包3.1 硬件钱包架构3.2 硬件钱包细节业务流程 四、MPC 托管钱包五、多签钱包 中心化钱包 :钱包私钥一…...
推理模型时代:大语言模型如何从对话走向深度思考?
一、对话模型和推理模型的区别概述 对话模型是专门用于问答交互的语言模型,符合人类的聊天方式,返回的内容可能仅仅只是一个简短的答案,一般模型名称后面会带有「chat」字样。 推理模型是比较新的产物,没有明确的定义,一般是指输出过程中带有<think>和</think&…...
调用click.getchar()时Windows PyCharm无法模拟键盘输入
文章目录 问题描述解决方案参考文献 问题描述 调用 click.getchar() 时,Windows PyCharm 无法模拟键盘输入 解决方案 Run → Edit Configurations… → Modify options → Emulate terminal in output console 参考文献 Terminal emulator | PyCharm Documentati…...
关于ES中text类型时间字段范围查询的结构化解决方案
前言 有关es中text类型的时间字段范围查询的问题,比如: {"query": {"range": {"insertTime": {"gte": "2025-02-01T00:00:00","lte": "2025-11-30T23:59:59","format&quo…...
易基因: ChIP-seq+DRIP-seq揭示AMPK通过调控H3K4me3沉积和R-loop形成以维持基因组稳定性和生殖细胞完整性|NAR
原文:ChIP-seqDRIP-seq揭示AMPK通过调控H3K4me3沉积和R-loop形成以维持基因组稳定性和生殖细胞完整性|NAR 大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 在饥饿等能量胁迫条件下,生物体会通过调整…...
Web 自动化测试提速利器:Aqua 的 Web Inspector (检查器)使用详解
Web 自动化测试提速利器:Aqua 的 Web Inspector (检查器)使用详解 前言简介一、安装二、Web Inspector 的使用2.1 获取元素定位器(Locators)2.2 将定位器添加到代码2.3 验证定位器2.4 处理 Frames (框架)总结前言 JetBrains 的 Aqua IDE 提供强大的 Web Inspector 工具,帮…...
数据中心储能蓄电池状态监测管理系统 组成架构介绍
安科瑞刘鸿鹏 摘要 随着数据中心对供电可靠性要求的提高,蓄电池储能系统成为关键的后备电源。本文探讨了蓄电池监测系统在数据中心储能系统中的重要性,分析了ABAT系列蓄电池在线监测系统的功能、技术特点及其应用优势。通过蓄电池监测系统的实施&#…...
01数据准备 抓取图片 通过爬虫方式获取bing的关键词搜索图片
为了获取训练所需的图片,我们最常用的手段就是自己去写一个爬虫去获取相关图片。本文将重点围绕如何采用爬虫的方式获取训练所需的图片素材进行讲解,为了大家能够够直观的掌握相关技术,参考本文的相关过程和代码获取自己的数据图片素材,笔者将详细介绍实现过程。 1、确定图…...
【UCB CS 61B SP24】Lecture 5 - Lists 3: DLLists and Arrays学习笔记
本文内容为构建双向循环链表、使用 Java 的泛型将其优化为通用类型的链表以及数组的基本语法介绍。 1. 双向链表 回顾上一节课写的代码,当执行 addLast() 与 getLast() 方法时需要遍历链表,效率不高,因此可以添加一个指向链表末尾的索引&am…...
Git 工作流程
1、Git 工作流程 http://www.ruanyifeng.com/blog/2015/12/git-workflow.html git push -f origin HEAD^:master 删除服务器上最近的一次提交git push -f origin HEAD^:master 2、Git分支管理 动画形式演示分支效果: http://onlywei.github.io/explain-git-with-…...
DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署
DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署 **DeepSeek** 是一款专注于深度学习和人工智能的工具或平台,通常与人工智能、机器学习、自动化分析等领域有关。它的主要功能可能包括:深度学习模型搜索&…...
