using UnityEngine;
[ExecuteInEditMode]//编辑模式下执行
public class BuildWall : MonoBehaviour
{
public enum EDirection { Up, Down, Left, Right, UpLeft, UpRight, DownLeft, DownRight }
public GameObject Brick;
public EDirection WhichDirection;
public int HowLong;
void Start()
{
//清空子物体
gameObject.transform.DestroyChildren();
//判定方向
var dir = Vector3.zero;
var spacing = 0;
switch (WhichDirection)
{
case EDirection.Up:
dir = Vector3.up;
spacing = Brick.GetComponent<UISprite>().height;
break;
case EDirection.Down:
dir = Vector3.down;
spacing = Brick.GetComponent<UISprite>().height;
break;
case EDirection.Left:
dir = Vector3.left;
spacing = Brick.GetComponent<UISprite>().width;
break;
case EDirection.Right:
dir = Vector3.right;
spacing = Brick.GetComponent<UISprite>().width;
break;
case EDirection.UpLeft:
dir = Vector3.up + Vector3.left;
spacing = Mathf.Max(Brick.GetComponent<UISprite>().width, Brick.GetComponent<UISprite>().height);
break;
case EDirection.UpRight:
dir = Vector3.up + Vector3.right;
spacing = Mathf.Max(Brick.GetComponent<UISprite>().width, Brick.GetComponent<UISprite>().height);
break;
case EDirection.DownLeft:
dir = Vector3.down + Vector3.left;
spacing = Mathf.Max(Brick.GetComponent<UISprite>().width, Brick.GetComponent<UISprite>().height);
break;
case EDirection.DownRight:
dir = Vector3.down + Vector3.right;
spacing = Mathf.Max(Brick.GetComponent<UISprite>().width, Brick.GetComponent<UISprite>().height);
break;
}
//创建墙体
for (var i = 0; i < HowLong; i++)
{
var newBrick = Instantiate(Brick, Vector3.zero, Quaternion.identity, transform);
newBrick.transform.localPosition = dir * i * spacing;
newBrick.tag = Brick.tag;
newBrick.name = Brick.name + i;
}
}
}
BuildWall.cs
最新推荐文章于 2024-01-31 14:10:16 发布