前提・実現したいこと
・Unityの2Dにて、画面をタップしたらタップした場所にプレハブを作成するアプリのようなものを作っています(イメージは画面をタップした場所にシールを張っていく感じです)
・プレハブは5種類ほどあり、想定通りタップするごとにプレハブが作成されています。
・しかし、シール貼りのように、新しく作成したプレハブが一番手前のレイヤーにならず、前に作成したプレハブの下に隠れたりしてしまいます(シールを貼る際のように、一番最新に貼ったものを一番手前のレイヤーに表示したいです)
・スクリプト側からレイヤーを常に最新になるように制御できないでしょうか。
発生している問題・エラーメッセージ
・プレハブを作成できてはいるものの、レイヤーが順番通りになっておらず、最新に作成したプレハブが過去に作成したプレハブの下に潜ってしまっている。
該当のソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
using System;
using UnityEngine.Rendering;
public class ItemGeneratorScript : MonoBehaviour{
public GameObject AnpanmanPrefab; public GameObject CheesePrefab; public GameObject BaikinmanPrefab; public GameObject ShokupanmanPrefab; public GameObject CurrypanPrefab; public GameObject DokinchanPrefab; private Vector3 clickPosition; private int counter; [SerializeField] SortingGroup sortingGroup; void Start() { } void Update() { if (Input.GetMouseButtonDown(0)) { if (counter < 50) { counter++; } else { SceneManager.LoadScene("GameScene"); } clickPosition = Input.mousePosition; var number = UnityEngine.Random.Range(1,7); if (number == 1) { Instantiate(AnpanmanPrefab, Camera.main.ScreenToWorldPoint(clickPosition), AnpanmanPrefab.transform.rotation); } else if(number == 2) { Instantiate(CheesePrefab, Camera.main.ScreenToWorldPoint(clickPosition), CheesePrefab.transform.rotation); } else if(number == 3) { Instantiate(BaikinmanPrefab, Camera.main.ScreenToWorldPoint(clickPosition), BaikinmanPrefab.transform.rotation); } else if(number == 4) { Instantiate(ShokupanmanPrefab, Camera.main.ScreenToWorldPoint(clickPosition), ShokupanmanPrefab.transform.rotation); //Debug.Log("53行目"); } else if(number==5) { Instantiate(CurrypanPrefab, Camera.main.ScreenToWorldPoint(clickPosition), CurrypanPrefab.transform.rotation); } else if(number==6) { Instantiate(DokinchanPrefab, Camera.main.ScreenToWorldPoint(clickPosition), DokinchanPrefab.transform.rotation); } } }
}
試したこと
・[SerializeField] SortingGroup sortingGroup;
private void Update () { // 何かキーを押す if ( Input.anyKeyDown ) { sortingGroup.sortingOrder = 10;
上記のようなことをしてみてもダメでした。
・また、
Instantiate(AnpanmanPrefab, Camera.main.ScreenToWorldPoint(clickPosition), AnpanmanPrefab.transform.rotation);
AnpanmanPrefab.GetComponent<SpriteRenderer>().sortingLayerName = SortingLayerName;
AnpanmanPrefab.GetComponent<SpriteRenderer>().sortingOrder = SortingOrder;
ということをしてもダメでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/03 04:18
2019/09/03 04:55
2019/09/03 05:19
2019/09/03 05:26