c# unity3D 怎么快速并列无缝拼接100个立方体 20

大神们,请问怎么并列无缝拼接3d物体,如我想在界面上添加100个立方体,拼成一个几乎无缝的大长方体,但是如果我一个一个手动拼的话,那么费时太长了,也太耗精力,请教各位,有... 大神们,请问怎么并列无缝拼接3d物体,如我想在界面上添加100个立方体,拼成一个几乎无缝的大长方体,但是如果我一个一个手动拼的话,那么费时太长了,也太耗精力,请教各位,有什么好的方法吗? 展开
 我来答
飞龙浪花
2019-04-16 · TA获得超过196个赞
知道小有建树答主
回答量:193
采纳率:76%
帮助的人:48.6万
展开全部

写个编辑器吧,也不是很难。用着也方便,自己想怎么改怎么改。点击菜单栏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;
        }
    }

}
小林紫丶
2019-04-16 · TA获得超过2118个赞
知道大有可为答主
回答量:1334
采纳率:88%
帮助的人:449万
展开全部
用阵列,
也可以复制样条线然后用倒角剖面
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伊古拉姆
2019-04-16 · TA获得超过1171个赞
知道小有建树答主
回答量:1133
采纳率:78%
帮助的人:278万
展开全部
Grid了解一下
追问
不会用呢,有案例么
追答

网页链接

3D对象只需要添加RectTransform,就可以像UI对象一样受GRID控制

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泡泡胧公主
2019-04-17 · TA获得超过134个赞
知道答主
回答量:394
采纳率:33%
帮助的人:51.6万
展开全部
你可以到paws3d上找找看他们是怎么做的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式