イベント

確認済のバージョン: 4.1

-

難易度: 中級

イベントを使って、動的な "ブロードキャスト" システムの作成法を学びます。

イベント

中級 Scripting

EventManager

Code snippet

using UnityEngine;
using System.Collections;

public class EventManager : MonoBehaviour 
{
    public delegate void ClickAction();
    public static event ClickAction OnClicked;

    
    void OnGUI()
    {
        if(GUI.Button(new Rect(Screen.width / 2 - 50, 5, 100, 30), "Click"))
        {
            if(OnClicked != null)
                OnClicked();
        }
    }
}
//Javascript にはビルトインの "event" はありません。
//この機能が必要な場合は、代わりに C# を使用します。
//Javascript で書かれたスクリプトは、C# で書かれた
//イベントを使用することができます。
import UnityEngine
import System.Collections


public class EventManager(MonoBehaviour):

    public callable ClickAction() as void
    public static event OnClicked as ClickAction

    
    
    private def OnGUI():
        if GUI.Button(Rect(((Screen.width / 2) - 50), 5, 100, 30), 'Click'):
            OnClicked()

TeleportScript

Code snippet

using UnityEngine;
using System.Collections;

public class TeleportScript : MonoBehaviour 
{
    void OnEnable()
    {
        EventManager.OnClicked += Teleport;
    }
    
    
    void OnDisable()
    {
        EventManager.OnClicked -= Teleport;
    }
    
    
    void Teleport()
    {
        Vector3 pos = transform.position;
        pos.y = Random.Range(1.0f, 3.0f);
        transform.position = pos;
    }
}
#pragma strict

//Javascript で書かれたスクリプトは、C# で書かれた
//イベントを使用することができます。それには、
//C# スクリプトを Javascripts より前にコンパイルする
//ことが大切です。両方を同時にコンパイルすると、
//互いを「見る」ことができません。

function OnEnable()
{
    EventManager.OnClicked += Teleport;
}


function OnDisable()
{
    EventManager.OnClicked -= Teleport;
}


function Teleport()
{
    var pos : Vector3 = transform.position;
    pos.y = Random.Range(1.0f, 3.0f);
    transform.position = pos;
}
import UnityEngine
import System.Collections


public class TeleportScript(MonoBehaviour):

    private def OnEnable():
        EventManager.OnClicked += Teleport

    
    
    private def OnDisable():
        EventManager.OnClicked -= Teleport

    
    
    private def Teleport():
        pos as Vector3 = transform.position
        pos.y = Random.Range(1.0F, 3.0F)
        transform.position = pos

TurnColorScript

Code snippet

using UnityEngine;
using System.Collections;

public class TurnColorScript : MonoBehaviour 
{
    void OnEnable()
    {
        EventManager.OnClicked += TurnColor;
    }
    
    
    void OnDisable()
    {
        EventManager.OnClicked -= TurnColor;
    }
    
    
    void TurnColor()
    {
        Color col = new Color(Random.value, Random.value, Random.value);
        renderer.material.color = col;
    }
}
#pragma strict

//Javascript で書かれたスクリプトは、C# で書かれた
//イベントを使用することができます。それには、
//C# スクリプトを Javascripts より前にコンパイルする
//ことが大切です。両方を同時にコンパイルすると、
//互いを「見る」ことができません。

function OnEnable()
{
    EventManager.OnClicked += TurnColor;
}


function OnDisable()
{
    EventManager.OnClicked -= TurnColor;
}


function TurnColor()
{
    var col : Color = new Color(Random.value, Random.value, Random.value);
    renderer.material.color = col;
}
import UnityEngine
import System.Collections


public class TurnColorScript(MonoBehaviour):

    private def OnEnable():
        EventManager.OnClicked += TurnColor

    
    
    private def OnDisable():
        EventManager.OnClicked -= TurnColor

    
    
    private def TurnColor():
        col = Color(Random.value, Random.value, Random.value)
        renderer.material.color = col

関連するチュートリアル