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