【Unity】ポップアップウィンドウ的なあれ。こうやって作ってるけど、他に良い方法あるんすかね?よくわかりませんわ。
Unityでポップアップウィンドウ的なやつって皆さんどうやって作ってますでしょうか?
僕はいつもPrefabでやっちゃってます。

こんな感じですね。
で、これの「popupWindow」をPrefab化して、Instantiateしてる感じです。
こういうのって増えれば増えるほど、Sceneの容量が増えて行ってしまいますが、いいんでしょうか?
もちろん、popupWindowにはScriptをつけて、「決定」や「キャンセル」の処理を書いています。
また、popupWindowのScriptのAwakeには以下のコード書いてます。
void Awake(){
transform.SetParent(GameObject.Find("親オブジェクト名").transform);
transform.localScale = Vector2.one;
transform.localPosition = Vector2.zero;
}
という感じで、ポップアップ的なやつをやっちゃってます。
他にいい方法あるんかな?
という感じで、簡単なメモ的なお話でした!アデュ~ノシ
Category: 開発日記(Unity)
« ファイルダウンロードのサーバ変更時のメモ | 【Unity】外部からのファイルダウンロードで対応したところ »
コメント
transform.SetParent(Transform)使うよりtransform.SetParent(Transform,bool)使ったほうが楽ですよ。
位置指定せずにInstantiateしたら、Root直下にLocal座標(0,0,0)で生成されるので、
2番目の引数をfalseにしたらLocal座標変わらず移動できるからそれで済みます。
うちはこんな感じにやってます。
//ダイアログのスクリプト
private System.Action positiveRes;
private System.Action negativeRes;
public void SetEvent(System.Action pos, System.Action neg){
positiveRes = pos;
negativeRes = neg;
}
//インスペクタ上でボタンと紐づけ
public void OnClickPositive(){
if(positiveRes != null){
positiveRes();
}
Destroy(this.gameObject);
}
//インスペクタ上でボタンと紐づけ
public void OnClickNegative(){
if(negativeRes != null){
negativeRes();
}
Destroy(this.gameObject);
}
//呼び出し元のスクリプト
GameObject obj = Instantiate(prefab) as GameObject;
DialogScript dialog = obj.GetComponent<DialogScript>();
dialog.SetEvent(
()=>{
//Yes押下時のイベント
},()=>{
//No押下時のイベント
});
後はプレハブの方に呼び出し時、破棄時のアニメーションでも設定してやるくらいでしょうか?
参考になれば幸いです
名無しさん #- | URL | 2015/05/27 12:10 [edit]
あ、自分で言っときながらミス
GameObject obj = Instantiate(prefab) as GameObject;
obj.transform.SetParent("親オブジェ",false);
DialogScript dialog = obj.GetComponent<DialogScript>();
です。
名無しさん #- | URL | 2015/05/27 12:11 [edit]
おー 名無しさんありがとうございます!
なるほどこういう方法あったのですね!
あんまり最近はAPIも見てないので知りませんでした!
SetParent見直してみます!
halcyon system 坂内 #- | URL | 2015/05/28 14:32 [edit]
| h o m e |