言語: 日本語
  • C#
  • JS
  • Boo

スクリプト言語

お好みのスクリプト言語を選択すると、サンプルコードがその言語で表示されます。

SerializeField

Namespace: UnityEngine

Suggest a change

Success!

Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable.

Close

Sumbission failed

For some reason your suggested change could not be submitted. Please try again in a few minutes. And thank you for taking the time to help us improve the quality of Unity Documentation.

Close

Cancel

Description

Unity が private フィールドを強制的にシリアライズします。

これはほとんどのケースで使用する必要がありません。 Unity がスクリプトをシリアライズする際、public フィールドのみシリアライズします。 それに加えて Unity で private フィールドをシリアライズさせたい場合、 フィールドに SerializeField 属性を追加できます。 Unity は全てのスクリプト コンポーネントをシリアライズし、新規のアセンブリをリロードして、 スクリプト コンポーネントをシリアライズしたバージョンから再作成します。 このシリアライズは .NET のシリアライズ機能により実施されず Unity 内部の機能で行なわれます。 シリアライズのシステムは次の条件があります: - public で static でないフィールド(シリアライズ可能な型)をシリアライズできる
- public でなく static でないフィールドに [SerializeField] 属性をつけてをシリアライズできる
- static フィールドはシリアライズできない
- プロパティはシリアライズできない
Unity がシリアライズ可能な型である場合のみフィールドはシリアライズされます: シリアライズ可能な型: - UnityEngine.Object から派生する全てのクラス, 例えば GameObject, Component, MonoBehaviour, Texture2D, AnimationClip 等々
- 全ての基本データ型、例えば int, string, float, bool
- いくつかのビルトインの型、例えば Vector2, Vector3, Vector4, Quaternion, Matrix4x4, Color, Rect, LayerMask
- シリアライズ可能な型の配列
- シリアライズ可能な型のリスト(Unity2.6 以降)
- 列挙体 注意: リスト(または配列)にひとつの要素を二回入れた場合、 リストがシリアライズされると、新規のリストの中に二回入るのででのではなく、その要素が二つできます。 ヒント: Unity は Dictionary をシリアライズしませんが、しかし キーのための List<> および値のための List<> を格納し、Awake() 時にシリアライズされてない Dictionary で 結びつけることが出来ます。これでも Dictionary を修正したものを保存する解決策とはならないものの、 多くの場合には便利な方法です。 UnityScript のユーザ向け: C# のフィールドは UnityScript ではスクリプト変数であり、 [SerializeField] は @SerializeField と記載する必要があります。クラス上の [Serializable] は UnityScript では @script Serializableとなります。

// Javascript example

//This field gets serialized because it is public.
var name = "John";

//This field does not get serialized because it is private.
private var age = 40;

//This field gets serialized even though it is private
//because it has the SerializeField attribute applied.
@SerializeField
private var hasHealthPotion:boolean = true;

function Update () {
}
//C# example
using UnityEngine;

public class SomePerson : MonoBehaviour {
	//This field gets serialized because it is public.
	public string name = "John";

	//This field does not get serialized because it is private.
	private int age = 40;

	//This field gets serialized even though it is private
	//because it has the SerializeField attribute applied.
	[SerializeField]
	private bool hasHealthPotion = true;

	void Update () {
	}
}