実現したいこと
Unityである範囲までCubeを生成するという機能があって、生成範囲をユーザーがUIから選択することが出来ます。選択してもらったサイズでCubeを生成するのですが生成する関数をマルチキャストデリゲートで登録しています。登録されたデリゲートをどれか一つ選択して呼び出すにはどのように書けばよいですか?
前提
Cubeの生成処理自体は既に出来上がっており問題ないです。
マルチキャストデリゲートで登録した関数を選択して呼び出す方法が調べても出てこなかったです。
該当のソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeSpawner : MonoBehaviour
{
//スポーンサイズは1010, 2020, 30*30
//デリゲート
public delegate void DelegateFunc();
public DelegateFunc delegateFunc;
[SerializeField]
private GameObject ACube;
[SerializeField]
private GameObject BCube;
void Start()
{
//デリゲートの登録
delegateFunc += GenerateCubeSizeTen;
delegateFunc += GenerateCubeSizeTwenty;
delegateFunc += GenerateCubeSizeThirty;
delegateFunc(); //登録されたデリゲートを呼び出し
}
//10*10の場合
public void GenerateCubeSizeTen()
{
for (int x = 0; x <= 10; x++) { for (int z = 1; z <= 10; z++) { for (int y = 0; y >= -1; y--) { Instantiate(ACube, new Vector3(x, y, z), Quaternion.identity); } } } for (int x = 0; x <= 10; x++) { for (int z = 1; z <= 10; z++) { for (int y = -2; y >= -10; y--) { Instantiate(BCube, new Vector3(x, y, z), Quaternion.identity); } } }
}
//20*20の場合
public void GenerateCubeSizeTwenty()
{
for (int x = 0; x <= 20; x++)
{
for (int z = 1; z <= 20; z++)
{
for (int y = 0; y >= -1; y--)
{
Instantiate(ACube, new Vector3(x, y, z), Quaternion.identity);
}
} } for (int x = 0; x <= 20; x++) { for (int z = 1; z <= 20; z++) { for (int y = -2; y >= -10; y--) { Instantiate(BCube, new Vector3(x, y, z), Quaternion.identity); } } }
}
//30*30の場合
public void GenerateCubeSizeThirty()
{
for (int x = 0; x <= 30; x++)
{
for (int z = 1; z <= 30; z++)
{
for (int y = 0; y >= -1; y--)
{
Instantiate(ACube, new Vector3(x, y, z), Quaternion.identity);
}
} } for (int x = 0; x <= 30; x++) { for (int z = 1; z <= 30; z++) { for (int y = -2; y >= -10; y--) { Instantiate(BCube, new Vector3(x, y, z), Quaternion.identity); } } }
}
}
試したこと
デリゲートにint型の引数を持たせて数値によって関数選択と考えましたがうまく書けなかったです。
補足情報(FW/ツールのバージョンなど)
Unity2020.3.25


回答1件
あなたの回答
tips
プレビュー