如何在编辑器中画出矩形

在做道具配置的时候,想要实现在编辑器内有一个和摄像机可视范围同样大小的矩形框,用来告诉我道具放置的边界在哪里,于是想要实现在scene窗口画矩形的一个效果,Unity的Gizmo可以实现类似的效果。

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

public class ItemGroupGenerator
{
    //ItemGroup是一个空的MonoBehaviour, 用于挂在想要显示Gizmo的物体上
    [DrawGizmo(GizmoType.NonSelected | GizmoType.Active | GizmoType.InSelectionHierarchy)]
    static void DrawItemGizmoType(ItemGroup gameObject, GizmoType gizmoType)
    {
        var transform = gameObject.transform;

        //根据选中的状态做差异化实验
        /*
        //该物体没有选中为绿色
        if ((gizmoType & GizmoType.NonSelected) != 0)
        {
            Gizmos.DrawWireCube(transform.position, Vector3.one);
        }
        //该物体选中时为红色
        if ((gizmoType & GizmoType.Active) != 0)
        {
            Gizmos.DrawWireCube(transform.position, Vector3.one);
        }
        //该物体选中或者该物体的父物体被选中
        if ((gizmoType & GizmoType.InSelectionHierarchy) !=0 )
        {
            Gizmos.DrawWireSphere(transform.position, 0.5f);
        } 
        */

        Vector3 cornerPos = Camera.main.ViewportToWorldPoint(new Vector3(1f, 1f, Mathf.Abs(-Camera.main.transform.position.z)));
        Vector3 leftUp = new Vector3(transform.position.x - cornerPos.x, transform.position.y + cornerPos.y, 0);
        Vector3 rightUp = new Vector3(transform.position.x + cornerPos.x, transform.position.y + cornerPos.y, 0);
        Vector3 leftDown = new Vector3(transform.position.x - cornerPos.x, transform.position.y - cornerPos.y, 0);
        Vector3 rightDown = new Vector3(transform.position.x + cornerPos.x, transform.position.y - cornerPos.y, 0);

        Gizmos.color = Color.green;
        Gizmos.DrawLine(leftUp, rightUp);
        Gizmos.DrawLine(leftUp, leftDown);
        Gizmos.DrawLine(leftDown, rightDown);
        Gizmos.DrawLine(rightUp, rightDown);
    }
}

效果图如下:


scene.jpg

game.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • This article is a record of my journey to learn Game Deve...
    蔡子聪阅读 3,929评论 0 9
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,031评论 3 119
  • 今天一同事发了个“付小啾一不满屋子折腾,果然……吓死妈妈了!!!”的鬼哭狼嚎的“心情”。我一瞅,哟呵,这不是蠼螋(...
    广陵十四阅读 3,820评论 23 4
  • 每个月都对自己总结,这是个好习惯。一年也就12次而已。写字总结也同样如此。 2017年3月,我在公众号《有青有益》...
    木华益阅读 331评论 0 3
  • 文/和天尘 慵懒的春光里散发着百花的气息 但不是你的 纵使相逢,不是你的 我不闻,秉着呼吸做匆匆过客 倾盆的大雨突...
    和天尘阅读 441评论 4 6