版本: Unity 6 (6000.0)
语言英语
  • C#

MonoBehaviour.Start()

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实会阅读用户提出的每一项更改建议,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的更改建议无法提交。请 <a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

描述

Start 在脚本启用时,并在第一次调用任何 Update 方法之前,在该帧上被调用。

Awake 函数一样,Start 在脚本的生命周期中只被调用一次。如果脚本在初始化时未启用,Start 可能不会在与 Awake 相同的帧上被调用。

Awake 函数在场景中所有对象的 Start 函数被调用之前,被调用在所有对象上。此特性在对象 A 的初始化代码需要依赖于对象 B 已经完成初始化的情况下很有用;B 的初始化应该在 Awake 中完成,而 A 的初始化应该在 Start 中完成。

在游戏过程中实例化对象时,它们的 Awake 函数在场景对象的 Start 函数完成之后被调用。

Start 函数可以定义为一个 协程,这使得 Start 可以暂停其执行(yield)。

// Initializes the target variable.
// target is private and thus not editable in the Inspector

// The ExampleClass starts with Awake. The GameObject class has activeSelf // set to false. When activeSelf is set to true the Start() and Update() // functions will be called causing the ExampleClass to run. // Note that ExampleClass (Script) in the Inspector is turned off. It // needs to be ticked to make script call Start.

using UnityEngine; using System.Collections;

public class ExampleClass : MonoBehaviour { private float update;

void Awake() { Debug.Log("Awake"); update = 0.0f; }

IEnumerator Start() { Debug.Log("Start1"); yield return new WaitForSeconds(2.5f); Debug.Log("Start2"); }

void Update() { update += Time.deltaTime; if (update > 1.0f) { update = 0.0f; Debug.Log("Update"); } } }