layout: post
title: Uinty3D基础操作
description: Uinty3D基础操作
categories:

  • Uinty3D
    tags:
  • Uinty3D

脚本流程控制:

在Unity脚本中,可以使用不同的函数来控制脚本的执行流程。这些函数的生命周期包括以下几个关键点:

  • Awake():在游戏对象被创建时立即执行,无论脚本组件是否被激活都会执行一次。通常用于初始化变量。
  • Start():在游戏对象被创建并且组件被启用后执行,位于Awake()之后和Update()之前。通常用于给变量赋值。
  • Update():在每一帧渲染时调用,大约每0.02秒(取决于帧率)。通常用于非物理计算。
  • FixedUpdate():在固定的时间间隔内调用,与物理引擎的检测频率相同。通常用于处理物理运动。
  • LateUpdate():在Update()之后调用,适用于处理跟随逻辑。

Unity脚本基础:

  • 变量的声明与使用:可以使用关键字[SerializeField]来对变量进行序列化,并在Inspector窗口中显示出来。[HideInInspector]可以隐藏变量不显示在Inspector窗口。
  • Unity脚本编写注意点:遵循一些编码规范,如将脚本初始化代码放在Start()方法中而不是构造函数中,以及注意public和private字段的使用。
  • Unity中代码调试:可以使用Debug.Log来在控制台输出调试信息。另外,可以使用Visual Studio(VS)来设置断点进行调试。

场景的创建和删除

  1. 创建新场景:
    使用快捷键"Ctrl+N"可以快速创建一个新的场景。创建出来的场景默认是一个临时的场景,并不会自动保存,需要手动保存起来以便后续使用。

  2. 修改和保存场景:

  3. 修改场景:打开场景后,可以直接对其中的物体进行修改操作。例如,可以添加新物体、删除物体,给物体添加组件等等。通过编辑器提供的工具和选项,可以对场景进行各种改变和调整。

  4. 保存场景:在修改完场景后,需要进行保存才能使修改生效。保存场景的快捷键是"Ctrl+S”。点击快捷键或者使用菜单栏中的"File -> Save"选项进行场景保存。保存时,可以选择保存场景的名称和路径。

  5. 删除场景:
    要删除一个场景,可以右键点击该场景并选择"Delete"选项进行删除操作。也可以在Project视图中选中要删除的场景,然后按下"Delete"键进行删除。删除场景后,该场景及其相关内容将被永久删除,谨慎操作。

同步加载场景

  1. 打开 “Build Settings”:在Unity编辑器中,点击菜单栏的 “File”,然后选择 “Build Settings”。

  2. 添加场景:在 “Build Settings” 窗口中,可以看到 “Scenes In Build” 列表。将要添加的场景拖动到此列表中。可以使用 “+” 按钮添加场景,或直接拖动场景文件到列表中。

  3. 排列场景顺序(可选):可以通过拖动场景在 “Scenes In Build” 列表中的顺序来确定场景的加载顺序。加载场景时,将按照列表中的顺序逐个加载场景。

  4. 加载场景:

  5. 使用 SceneManager.LoadScene():可以使用 SceneManager.LoadScene() 方法来加载场景。该方法可以接受场景名称或者场景的索引作为参数,并根据指定的场景来加载。

  6. 如果要在加载场景时保持旧场景不被销毁,可以添加第二个参数,使用 LoadSceneMode.Additive,例如:SceneManager.LoadScene(“SceneName”, LoadSceneMode.Additive)。

异步加载场景

  1. 区别:

  2. 同步加载:同步加载是指在加载过程中,线程会被阻塞,直到加载完成。在加载完成之前,无法执行其他任务或代码。

  3. 异步加载:异步加载是指在加载过程中,线程不会被阻塞,可以同时执行其他任务或代码。加载完成后,可以根据需要选择是否跳转到加载的场景。

  4. 使用的API:

  5. SceneManager.LoadSceneAsync():使用该方法进行场景的异步加载。它与同步加载的参数相同,接受场景名称或索引作为参数,返回一个AsyncOperation对象。

  6. 异步加载返回的AsyncOperation对象有以下常用属性和方法:

  7. AsyncOperation.isDone:判断是否加载完成。通常用于判断加载完成后执行下一步的操作。

  8. AsyncOperation.allowSceneActivation:设置加载完成后是否跳转到目标场景。如果设置为false,则需要手动触发跳转。

  9. AsyncOperation.progress:获取加载进度。注意,一旦进度达到0.9,实际上加载已经完成,之后便可以跳转到目标场景。

Unity3D 2D物理系统

Unity的2D物理系统是用来模拟2D游戏世界中的物理效果的工具。学习2D物理系统可以帮助开发者实现更真实的游戏交互效果,同时结合Unity的UGUI,还可以制作出各种2D类型的项目。

在2D世界中,碰撞和触发是物体之间发生交互的常见方式。碰撞需要两个物体都带有碰撞器组件,其中一个物体还需要有刚体组件。当两个物体碰撞时,会触发以下生命周期函数:OnCollisionEnter2D(碰撞开始)、OnCollisionExit2D(碰撞结束)、OnCollisionStay2D(碰撞持续)。

触发需要至少一个物体的碰撞器勾选了"是否触发"选项。当有一个触发器物体进入或离开另一个物体的触发器范围时,会触发以下生命周期函数:OnTriggerEnter2D(进入触发器)、OnTriggerExit2D(离开触发器)、OnTriggerStay2D(持续在触发器内)。

2D物理材质可以为物体添加摩擦力和反弹力,来改变物体之间的摩擦和碰撞行为。可以通过调整物体的物理材质属性来改变物体的表现。

2D效果器是用来模拟一些特殊效果的组件,例如浮力效果器、表面效果器、2D区域效果器和点效果器。这些效果器可以用来实现各种物理效果,增强游戏的视觉效果。

除了基本的碰撞器和触发器组件,Unity还提供了其他形状的碰撞器,如圆形、胶囊形状和多边形。恒力组件可以给物体施加一个持续的力。

脚本和刚体之间可以进行交互。通过初始化、调用API等方式,可以在脚本中控制刚体的运动,实现更多的物理交互效果。