首页 > 其他分享 >Unity编辑器Scene窗口快捷操作

Unity编辑器Scene窗口快捷操作

时间:2024-05-21 14:57:30浏览次数:17  
标签:GUILayout Gizmos Vector3 Unity Scene 编辑器 using position trans

1.按住crtl,可以一个一个单位移动、缩放、旋转物体,单位距离在Edit-Snapsetting中设置,设置单位大小 2.选中物体,按住alt + 鼠标左键,可以环视目标物体 3.按住V键,可以将物体的顶点接到其他物体的顶点   如果要设置更改其他在Scene窗口中的操作,可以利用MonoBehaviour下的OnDrawGizmos或OnDrawGizmosSelectsd方法,比如:   //自定义操作对象,并且设置执行的操作

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

//声明要处理的组件类型
[CustomEditor(typeof(BoxCollider))]
public class CustomCubeEditor : Editor
{
    BoxCollider m_cube;
    Transform m_trans;
    void OnEnable()
    {
        //包含该组件的物体被选中的时候调用
        m_cube = (BoxCollider)target;
        m_trans = m_cube.transform;
    }
    void OnSceneGUI()
    {
        //坐标位置取整
        Vector3 posTemp = m_trans.localPosition;
        float x = Mathf.RoundToInt(posTemp.x);
        float y = Mathf.RoundToInt(posTemp.y);
        float z = Mathf.RoundToInt(posTemp.z);
        m_trans.localPosition = new Vector3(x, y, z);
        //显示坐标
        Handles.Label(m_trans.position + Vector3.up * 3, m_cube.name + ":" +
        m_trans.position.ToString());
        Handles.BeginGUI();
        //规定GUI显示区域
        GUILayout.BeginArea(new Rect(100, 100, 100, 100));
        //GUl绘制按钮
        if (GUILayout.Button("上移"))
        {
            m_trans.position += Vector3.up;
        }
        if (GUILayout.Button("下移"))
        {
            m_trans.position += Vector3.down;
        }
        if (GUILayout.Button("左移"))
        {
            m_trans.position += Vector3.left;
        }
        if (GUILayout.Button("右移"))
        {
            m_trans.position += Vector3.right;
        }
        GUILayout.EndArea();
        Handles.EndGUI();
    }
}

//这是Mono中的方法,需要挂载使用,在Scene中每帧调用和被选中的时候每帧调用

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CustomCube : MonoBehaviour
{
    void OnDrawGizmos()
    {
        //每帧调用
        //绘制一个cube边框
        Gizmos.color = Color.black;
        Gizmos.DrawWireCube(GetComponent<Renderer>().bounds.center, GetComponent<Renderer>().bounds.size);
        //绘制一条直线,指向物体正上方
        Gizmos.color = Color.yellow;
        Gizmos.DrawLine(transform.position, transform.position + transform.up * 2);
    }
    void OnDrawGizmosSelected()
    {
        //被选中的时候每帧调用
        Gizmos.color = Color.red;
        Gizmos.DrawWireCube(GetComponent<Renderer>().bounds.center, GetComponent<Renderer>().bounds.size);
    }
}

 

标签:GUILayout,Gizmos,Vector3,Unity,Scene,编辑器,using,position,trans
From: https://www.cnblogs.com/weigangblog/p/18204060

相关文章

  • Unity控制台console打印富文本
    可以用来控制Debug打印文本的 加粗斜体大小颜色Debug.Log("HelloWorld".AddBoldTag().AddColorTag("red"));publicstaticclassStringTagExt{publicstaticstringAddBoldTag(thisstringtext){returntext.AddTag("b");}......
  • Unity物体之间碰撞检测的方法
    检测碰撞有两种方式,一种是利用碰撞器,另外一种就是触发器。碰撞器的种类:1.StaticCollider静态碰撞器指的是相互碰撞的两个物体没有附加刚体而只附加了Collider的游戏对象。这类对象在碰撞时会保持静止,发生碰撞时不会触发任何的方法函数。 2.RigidbodyCollider刚体碰撞器......
  • Unity WebGL的一些配置
    添加自定义值方法:在网页模板中,添加<title>公司名字|{{{PROJECT_NAME}}}</title>///读取PlayerSettings.GetTemplateCustomValue("PROJECT_NAME");///设置PlayerSettings.SetTemplateCustomValue("PROJECT_NAME","这是一个自定义值");修改WebGL模板说......
  • Arch Linux CN Community repo mirrors list
    kate /etc/pacman.conf/etc/pacman.d/mirrorlist ##Ourmainserver(Amsterdam,theNetherlands)(ipv4,ipv6,http,https)[archlinuxcn]Server=https://repo.archlinuxcn.org/$arch ##CERNET(中国)(ipv4,ipv6,http,https)##Added:2023-08-19##Thiswill......
  • Unity优化总结(2021.04.08)
    项目性能优化的三个方面:1.CPU优化Cpu优化不够会出现的问题:由于短时间计算量太大,画面流畅性降低,出现跳帧发热严重,耗电量高(1)代码方面删除一些空的方法,尤其是Update等;使用for循环代替foreach,使用List代替ArrayList,尽量少使用封箱拆箱操作;循环中可以Break掉的直接退出循......
  • Unity性能优化CPU优化
    CPU主要进行计算机的各种计算操作,因此关于CPU性能优化的方面和Tips有很多,有些影响大有些影响小,有些容易优化有些不易优化,细节方面也有很多,归类之后重点讲几个方面,并列出常见Tips。对CPU性能影响比较大的主要有以下几个方面:DrawCalls,物理组件,GC,代码质量,其中DrawCall是CPU优化最先......
  • Unity性能优化GPU渲染优化
    GPU优化不够容易出现1.发热严重,耗电量高2.FPS降低GPU优化的方向:1.像素的复杂度,比如实施阴影(手游中禁用),复杂的shader2.顶点过多,也就是模型面数多、复杂3.GPU的显存带宽 一、优化美术资源1)合理规划图集2)约定好模型的最大三角形面数3)制定合理的粒子效果规范4)减少模型数......
  • Unity性能优化内存优化
    如何优化内存?1.压缩自带类库;2.将暂时不用的以后还需要使用的物体隐藏起来而不是直接Destroy掉;3.释放AssetBundle占用的资源;4.降低模型的片面数,降低模型的骨骼数量,降低贴图的大小;5.使用光照贴图;6.使用多层次细节(LOD);7.使用着色器(Shader);8.使用预设(Prefab)等。 内存开......
  • Unity内存优化(来自uwa)
    内存优化——“勿以善小而不为,勿以恶小而为之” 资源内存占用一、纹理资源纹理资源可以说是几乎所有游戏项目中占据最大内存开销的资源。一个6万面片的场景,网格资源最大才不过10MB,但一个2048x2048的纹理,可能直接就达到16MB。因此,项目中纹理资源的使用是否得当会极大地影响......
  • Unity场景预加载
    async.allowSceneActivation=false;privateAsyncOperationasync;async=SceneManager.LoadSceneAsync("MainScene");async.allowSceneActivation=false;yieldreturnStartCoroutine(Loading());IEnumeratorLoading(){floatcurProgress......