イベント

確認済のバージョン: 4.1

-

難易度: 中級

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

イベント

中級 スクリプティング

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

関連するチュートリアル

スクリプティング

  1. スクリプトを使ったコンポーネントの作成
  2. 変数と関数
  3. 規則と構文
  4. C# と JS 構文の違い
  5. IF 文
  6. ループ
  7. スコープとアクセス指定子
  8. Awake と Start
  9. Update と FixedUpdate
  10. ベクトル演算
  11. コンポーネントの有効化と無効化
  12. ゲームオブジェクトのアクティベーション
  13. Translate と Rotate
  14. LookAt
  15. Linear Interpolation
  16. Destroy
  17. GetButton と GetKey
  18. GetAxis
  19. OnMouseDown
  20. GetComponent
  21. deltaTime
  22. データ型
  23. クラス
  24. Instantiate
  25. 配列
  26. Instantiate
  27. 列挙
  28. Switch 文
  1. プロパティー
  2. 三項演算子
  3. 静的な変数、メソッド、クラスの作り方
  4. メソッドのオーバーロード
  5. ジェネリック
  6. 継承
  7. ポリモーフィズム
  8. メンバーの隠ぺい
  9. オーバーライド
  10. インターフェース
  11. 拡張メソッド
  12. 名前空間
  13. リストと辞書
  14. コルーチン
  15. クォータニオン
  16. デリゲート
  17. 属性
  18. イベント
  1. カスタムインスペクターの作成
  2. DrawDefaultInspector 関数
  3. カスタムインスペクターへのボタンの追加
  1. MonoDevelop's Debugger
  2. Good Coding Practices in Unity
  3. Unity Editor Extensions – Menu Items
  4. Creating Meshes
  1. AssetBundles and the AssetBundle Manager
  2. Mastering Unity Project Folder Structure - Version Control Systems
  1. Installing Tools for Unity Development
  2. Building your first Unity Game with Visual Studio
  3. Editing Unity games in Visual Studio
  4. Debugging Unity games in Visual Studio
  5. Graphics debugging Unity games in Visual Studio
  6. Taking Unity games to Universal Windows Platform
  7. Testing Unity games on Android in Visual Studio
  1. Scripting Primer and Q&A
  2. Scripting Primer and Q&A - Continued
  3. Scripting Primer and Q&A - Continued (Again)
  4. Persistence - Saving and Loading Data
  5. Object Pooling
  6. Introduction to Scriptable Objects
  7. How to communicate between Scripts and GameObjects
  8. Coding in Unity for the Absolute Beginner
  9. Sound Effects & Scripting
  10. Editor Scripting Intro
  11. Writing Plugins
  12. Property Drawers & Custom Inspectors
  13. Events: Creating a simple messaging system
  14. Using Interfaces to Make a State Machine for AI
  15. Ability System with Scriptable Objects
  16. Character Select System with Scriptable Objects
  1. Intro and Setup
  2. Data Classes
  3. Menu Screen
  4. Game UI
  5. Answer Button
  6. Displaying Questions
  7. Click To Answer
  8. Ending The Game and Q&A
  1. Intro To Part Two
  2. High Score with PlayerPrefs
  3. Serialization and Game Data
  4. Loading Game Data via JSON
  5. Loading and Saving via Editor Script
  6. Game Data Editor GUI
  7. Question and Answer
  1. Overview and Goals
  2. Localization Data
  3. Dictionary, JSON and Streaming Assets
  4. Localization Manager
  5. Startup Manager
  6. Localized Text Component
  7. Localized Text Editor Script
  8. Localization Q&A