Skip to content

Instantly share code, notes, and snippets.

@todorok1
Created September 13, 2020 04:39
Show Gist options
  • Save todorok1/462103eb0c5674ea1bc59ce598abc807 to your computer and use it in GitHub Desktop.
Save todorok1/462103eb0c5674ea1bc59ce598abc807 to your computer and use it in GitHub Desktop.
地面の上にブロック崩しのブロックを並べて配置するサンプル
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <Summary>
/// Prefabのオブジェクトを並べるサンプルスクリプトです。
/// </Summary>
public class PrefabPlaceSample : MonoBehaviour
{
// オブジェクトを生成する元となるPrefabへの参照を保持します。
public GameObject prefabObj;
// 生成したオブジェクトの親オブジェクトへの参照を保持します。
public Transform parentTran;
// マテリアルを保持します。
public Material matCyan;
public Material matMagenta;
public Material matYellow;
void Start()
{
CreateBlockObject();
}
/// <Summary>
/// Prefabからブロックとして使うオブジェクトを生成します。
/// </Summary>
void CreateBlockObject()
{
int row = 10;
int column = 20;
float xOffset = 1.5f;
float zOffset = 1.5f;
for (int j = 0; j < row; j++)
{
for (int i = 0; i < column; i++)
{
// ゲームオブジェクトを生成します。
GameObject obj = Instantiate(prefabObj, Vector3.zero, Quaternion.identity);
// ゲームオブジェクトの親オブジェクトを設定します。
obj.transform.SetParent(parentTran);
// ゲームオブジェクトの位置を設定します。
float xPos = xOffset * i;
float zPos = zOffset * j;
obj.transform.localPosition = new Vector3(xPos, 0.5f, zPos);
// マテリアルをランダムで設定します。
int materialId = Random.Range(0, 3);
Material mat = matCyan;
switch (materialId)
{
case 1:
mat = matMagenta;
break;
case 2:
mat = matYellow;
break;
}
obj.GetComponent<MeshRenderer>().material = mat;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment