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

ScriptableObject.Awake()

建议更改

成功!

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

关闭

提交失败

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

关闭

取消

切换到手册

描述

当创建 ScriptableObject 的实例时调用。

Awake 在创建 ScriptableObject 的新实例时调用。发生这种情况的场景包括

注意:在编辑模式下创建为资源的 ScriptableObjects 不会在进入播放模式时重新创建。要在进入播放模式时在 ScriptableObject 中执行初始化工作,请改用 ScriptableObject.OnEnable

下面给出一个示例。此示例包含两个脚本。首先显示的是 ScriptableObject 脚本。它实现了与 MonoBehaviour 分开的代码。第二个是一个小的 MonoBehaviour 相关脚本,它访问 ScriptableObject 脚本中的值。

// A ScriptableObject example script.
// The A and B members implement features which
// are unrelated to MonoBehaviour.

using UnityEngine;

public class ScriptObj : ScriptableObject { int a = 10; int[] b = new int[5] {0, 17, 34, 42, 67};

public int A { get {return a; } }

// return value in b array, or -1 if x is out-of-range public int B(int x) { if (x >= 0 && x < 5) return b[x]; else return -1; }

public void Awake() { Debug.Log("Awake"); }

public void OnDestroy() { Debug.Log("OnDestroy"); } }

以下脚本使用了上述 ScriptableObject 脚本。

// create and access the ScriptObj

using UnityEngine;

public class ScriptObjExample : MonoBehaviour { ScriptObj test;

void Start() { test = (ScriptObj)ScriptableObject.CreateInstance(typeof(ScriptObj));

print(test.A); print(test.B(3)); print(test.B(-3)); } }