以下の内容はhttps://redhologerbera.hatenablog.com/entry/2021/03/25/212933より取得しました。


ExecuteInEditModeについて調べてみた

本日はUnity枠です。

現在MRDLのSurfacesプロジェクトの解読をしています。

[ShaderTimeUpdater]というクラスの中で見慣れない属性が付けられていたため今回は調べてみます。

〇ExecuteInEditMode

[ExecuteInEditMode]
public class ShaderTimeUpdater : MonoBehaviour
{
...
}

docs.unity3d.com

ExecuteInEditModeは「EditModeで実行する」という属性です。

この属性を付けたクラスのUpdate関数はUnityのエディタ上で実行されます。

今回は次のようなスクリプトを記述しました。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[ExecuteInEditMode]
public class Test : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        Debug.Log("Editor上で動いた!");
    }
}

これを適当なゲームオブジェクトにアタッチしてコンソールを開きます。

するとUnityエディタを実行していないにもかかわらずコンソールウィンドウにログが表示されました。

f:id:Holomoto-Sumire:20210325191304j:plain

どうやら[ExecuteInEditMode]は今後廃止されていくようで

[ExecuteAlways]

が新しい属性になるようです。

MRDLのSurfaceのプロジェクトを見ているとこうした古いものが多いため面白いです。




以上の内容はhttps://redhologerbera.hatenablog.com/entry/2021/03/25/212933より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14