c# unity3D 怎么快速并列无缝拼接100个立方体 20
大神们,请问怎么并列无缝拼接3d物体,如我想在界面上添加100个立方体,拼成一个几乎无缝的大长方体,但是如果我一个一个手动拼的话,那么费时太长了,也太耗精力,请教各位,有...
大神们,请问怎么并列无缝拼接3d物体,如我想在界面上添加100个立方体,拼成一个几乎无缝的大长方体,但是如果我一个一个手动拼的话,那么费时太长了,也太耗精力,请教各位,有什么好的方法吗?
展开
4个回答
展开全部
写个编辑器吧,也不是很难。用着也方便,自己想怎么改怎么改。点击菜单栏Tools/CreatBox 进行体验,代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
public class CreatBoxEditor : EditorWindow
{
public enum Dir
{
_DirX = 0,
_DirY = 1,
_DirZ = 2
}
//生成方向
public Dir _Dir = Dir._DirX;
//初始化数量
public int _InitNum = 10;
//预制体
public GameObject _Box;
//box之间的距离
public float _Dis = 1f;
[MenuItem("Tools/CreatBox",false,23)]
public static void OpenWindows() {
EditorWindow windows = GetWindow(typeof(CreatBoxEditor));
windows.titleContent.text = "CreatBox";
windows.maxSize = new Vector2(400, 200);
windows.minSize = new Vector2(400, 200);
windows.Show();
}
void OnGUI()
{
GUILayout.BeginHorizontal("Box");
GUILayout.BeginVertical();
_Dir = (Dir)EditorGUILayout.EnumPopup("生成方向:", _Dir);
GUILayout.BeginHorizontal();
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.Label("生成数量: ");
_InitNum = EditorGUILayout.IntField(_InitNum);
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
_Box = (GameObject) EditorGUILayout.ObjectField("预制体: ", _Box,typeof(GameObject));
GUILayout.EndHorizontal();
GUILayout.BeginHorizontal();
GUILayout.Label("两个物体之间的距离: ");
_Dis = EditorGUILayout.FloatField(_Dis);
GUILayout.EndHorizontal();
if (GUILayout.Button("开始"))
{
Creat(_Dir);
}
GUILayout.EndVertical();
GUILayout.EndHorizontal();
}
void Creat(Dir dir)
{
switch (dir)
{
case Dir._DirX:
if(_InitNum > 0)
{
if (_Box == null)
{
Debug.LogError("Prefabs is null");
return;
}
GameObject parent = new GameObject("BoxList");
for(int i = 0; i < _InitNum; i++)
{
GameObject go = Instantiate(_Box) as GameObject;
go.transform.parent = parent.transform;
go.transform.localPosition = new Vector3(_Dis * i, 0, 0);
}
}
break;
case Dir._DirY:
if (_InitNum > 0)
{
if (_Box == null)
{
Debug.LogError("Prefabs is null");
return;
}
GameObject parent = new GameObject("BoxList");
for (int i = 0; i < _InitNum; i++)
{
GameObject go = Instantiate(_Box) as GameObject;
go.transform.parent = parent.transform;
go.transform.localPosition = new Vector3(0,_Dis * i, 0);
}
}
break;
case Dir._DirZ:
if (_InitNum > 0)
{
if (_Box == null)
{
Debug.LogError("Prefabs is null");
return;
}
GameObject parent = new GameObject("BoxList");
for (int i = 0; i < _InitNum; i++)
{
GameObject go = Instantiate(_Box) as GameObject;
go.transform.parent = parent.transform;
go.transform.localPosition = new Vector3(0,0,_Dis * i);
}
}
break;
}
}
}
展开全部
用阵列,
也可以复制样条线然后用倒角剖面
也可以复制样条线然后用倒角剖面
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Grid了解一下
追问
不会用呢,有案例么
追答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以到paws3d上找找看他们是怎么做的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询