C#ではよく「文字列に対して一部を削除・置き換えたい」という時があります。
そんなときに使えるメソッド(Replaceメソッド)とunity上での実用的なテクニックについて解説していきます。
文字列から特定の文字列を削除・置き換える
C#にはstring型に『Replaceメソッド』が用意されています。
例えば、下では「田中太郎さん」という文字列から「さん」を取り除いています。
1 2 3 4 5 6 7 |
void Sample() { string strBefor = "田中太郎さん"; string strAfter = strBefor.Replace("さん", ""); Debug.Log(strAfter); } |
上のコードを実行すると「田中太郎」がコンソールに表示されます。
つまり、上の4行目で「”田中太郎さん”」の「”さん”」を「””(空白)」に置き換えているわけです。
【実用的】unityで使ってみる
次にReplaceメソッドをunityで使ってみます。
下では「ボタンを押下するとその上にある船が消える」という処理内容でReplaceメソッドを使ってみようと思います。
※Replaceメソッドを使ってそれぞれのボタンにアタッチするスクリプトや処理は同一のモノにできる。

それぞれのボタンの挙動は下の通りです。
・「Ship1_Btn」を押下⇒「Ship1」が非表示(表示)
・「Ship2_Btn」を押下⇒「Ship2」が非表示(表示)
・「Ship3_Btn」を押下⇒「Ship3」が非表示(表示)
今回はボタン(Ship_Btn)と操作したいオブジェクト(Ship)の名前で関連付けられる。
そして、3つのボタンにアタッチしているスクリプト(ButtonController)は下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using UnityEngine; public class ButtonController : MonoBehaviour { GameObject targetObjet = null; // Start is called before the first frame update void Start() { string targetObjectName = gameObject.name.Replace("_Btn", ""); targetObjet = GameObject.Find(targetObjectName).gameObject; } public void OnButton() { if (targetObjet.activeSelf) { targetObjet.SetActive(false); } else { targetObjet.SetActive(true); } } } |
9行目:アタッチしているボタンの名前から「_Btn」を削除し、操作対象オブジェクトと同じ名前の文字列を作成する。
10行目:上で作成した文字列から対象オブジェクトを取得する。
このようなヒエラルキー上でのルールとスクリプトで1つの処理だけで複数のオブジェクトに対して同じ挙動を得ることができるようになったりします。
Replaceメソッドはこのような応用ができたりします。
スポンサーリンク