Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
56
Help us understand the problem. What is going on with this article?
@Teach

他スクリプトから変数の値を取得する.(ゲッター,セッター)

More than 5 years have passed since last update.

プレイヤーの弾の残り数など,他のスクリプトの変数の値が欲しいことがある.
その方法について紹介する.

PlayerScript.cs
private int bulletCount = 5;

この,bulletCountを取得したいとする.
方法は3つある.
1. publicにする.
2. プロパティーを使う.
3. それ用の関数を作る.

それぞれ紹介するが,おすすめは,2のプロパティーである.

publicで取得

PlayerScript.cs
public int bulletCount = 5;

private ではなく,public を使用する.

OtherScript.cs
public PlayerScript playerScript;

void Start(){
    int bCount;
    bCount = playerScript.bulletCount;
    Debug.Log(bCount); //5
}

playerScript.bulletCountという形で取得することができる.

問題点

  • 外部から値を入力できてしまうため,バグの原因になる.

プロパティーを使う.

PlayerScript.cs
private int bulletCount = 5;
//プロパティー
public int BulletCount{
    get{ return this.bulletCount; }  //取得用
    private set{ this.bulletCount = value; } //値入力用
}

setの方にはprivateをつけることで,他のスクリプトからの入力はできないようにする.

OtherScript.cs
public PlayerScript playerScript;

void Start(){
    int bCount;
    bCount = playerScript.BulletCount;
    Debug.Log(bCount); //5
}

取得の方はあまり変わらない.

問題点

  • 初心者にとっては何のためにやるのかわからない.

関数を作る.

PlayerScript.cs
private int bulletCount = 5;
//取得用関数
public int GetBulletCount(){
    return bulletCount;
}

取得用の関数を作る.関数の頭にGetを作るのが主.
逆に値入力の場合はSetがつけられることが多い.SetBulletCount

OtherScript.cs
public PlayerScript playerScript;

void Start(){
    int bCount;
    bCount = playerScript.GetBulletCount();
    Debug.Log(bCount); //5
}

この方法でもバグは起こりにくいため,
こっちの方法でも問題はない.

取得の際に処理を行う場合はこれでもいいと思う.

問題点

  • 長い
56
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
56
Help us understand the problem. What is going on with this article?