FC2ブログ
08 «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.26.27.28.29.30.» 10

ハルシオンシステムの気ままBlog

株式会社ハルシオンシステムのメンバーが送る、UnityやらJavaやらの技術的話題から、自社開発のアプリの宣伝とかとかのブログです。ほんと気ままにいきたいと思います。更新日は毎週 月 木でっす!

 

【ハルシオンブログ】プレハブを使ってオブジェクトを好きな場所に出す方法。位置調整とかめんどいっすよね・・・・ 

おはようございます。坂内っす。

今日は台風15号のせいで寝不足でございます。

さてUnityの話。

出したい場所にオブジェクトを出す方法について。

【前提】
[画面に出す石の絵のプレハブ]



石のSpriteをつけたuGUIのImageプレハブです。

[画面構成]


[SpawnManager.cs]

using UnityEngine;
using UnityEngine.UI;

public class SpawnManager : MonoBehaviour
{
[SerializeField]
Image stonePrefab;
[SerializeField]
Transform canvasTran;
}



今はまだこれだけ。


【出したい場所にオブジェクトを出す方法 其の1】
座標をそのまま書いちゃう方法。


using UnityEngine;
using UnityEngine.UI;

public class SpawnManager : MonoBehaviour
{
[SerializeField]
Image stonePrefab;
[SerializeField]
Transform canvasTran;

Vector2[] positions = {
new Vector2(100f,100f),
new Vector2(-130f,-250f),
new Vector2(200f,250f)
};

private void Start() {
foreach(Vector2 posi in positions) {
Image img = Instantiate(stonePrefab, canvasTran, false);
img.gameObject.transform.localPosition = posi;
}
}
}





なんかポジション書くのもいいんだけど、どこに出すのかの座標をいちいちやるのはめんどいですよね。
仕様でちゃんと座標指定されているのならばあれですが・・・
あんまり数値をコードに書きたくないっすね。

positionをpublicにしてアサインするのも手ですが。


【出したい場所にオブジェクトを出す方法 其の2】
出したい座標にオブジェクトを置いて出す方法。




こんな感じに、オブジェクトを出したい場所に空のGameObjectを置きます。

[SpawnManager.cs]

using UnityEngine;
using UnityEngine.UI;

public class SpawnManager : MonoBehaviour
{
[SerializeField]
Image stonePrefab;
[SerializeField]
Transform canvasTran;

[SerializeField]
Transform[] trans;

private void Start() {
foreach(Transform tran in trans) {
Image img = Instantiate(stonePrefab, canvasTran, false);
img.gameObject.transform.localPosition = tran.localPosition;
}
}
}


コードをこんな感じにいじります。




Transformをそれぞれアサインします。

これで実行すると、先ほど置いた空のGameObjectの場所にImageのオブジェクトが出ます。


という感じで、大体この2パターンを主流に使ってます。
どちらかといえば最近は2番目の方が多いかな。

これで好きな場所にオブジェクトが出せますね!

では、あでゅ~ノシ
スポンサーサイト



Category: 開発日記(Unity)

tb 0 : cm 0