Unity

スクリプトによる文字の変更

簡単なアイスホッケーゲームを作った。

右側のプレイヤー1のゴールにボールが入った時、スクリプトにより"Player2の勝ち!"、
左側のプレイヤー2のゴールにボールが入った時、スクリプトにより"Player1の勝ち!"と表示したい。
スクリーンショット 2018-10-12 15.16.47.png

前提条件

スクリーンショット 2018-10-12 15.27.21.png
HierarchyのCanvasにはmessageというオブジェクトが存在する。

どうすればいいか

using UnityEngine;
using UnityEngine.UI;//UIをいじるときに必要。Text型を認識しなくなってしまう。
public class ballScript : MonoBehaviour
{
    public float speed = 25;
    private GameObject Message;//このスクリプト内でのみ有効なゲームオブジェクトMessageを定義。ここにmessageをいれる。
    Text text ;//Text型の変数textを定義。

    private void Start()
    {
        Message= GameObject.Find ("message");//Hierarchyのmessageオブジェクトを探し出し、さっきのmessageにいれる。
        text = Message.GetComponent<Text> ();//Messageはmessageを指しているので、TextをGetComponentし、さっきのtextにいれる。
        var force = (transform.right + transform.forward) * speed;
        this.GetComponent<Rigidbody> ().AddForce (force,ForceMode.VelocityChange);

    }
    private void Update(){
    }

    void OnCollisionEnter(Collision collision){
        if (collision.gameObject.tag == "goal1") {
            text.text="Player2の勝ち!";//テキスト型変数の中身を変更する。
        }
        if (collision.gameObject.tag == "goal2") {

            text.text="Player1の勝ち!";
        }
    }
}

▼UnityEngine.UIを書いておく。
▼Text型の変数textを定義。
▼ゲームオブジェクトMessage(ここにmessageをいれる)を定義。
▼GameObject.Find("")でHierarchyのmessageオブジェクトを探し出してMessageに入れる。
▼MessageのText要素をGetComponentして、textに代入。
▼壁にぶつかったとき、表示する。