(三)拓展Scene视图

Scene视图是编辑游戏模型的地方,其实它还可以进行编辑。如下图所示,我给Scene视图做了简单的编辑。

 Scene视图的拓展是基于对象的,意思就是你必须在Hierarchy视图中选择一个对象才行。Hierarchy视图中选择不同的对象可以有不同的Scene视图。图中我们创建了一个立方体对象,接着给它绑定一个脚本。

 Test.cs 是个空空的脚本。

 
using UnityEngine;
using System.Collections;
 
public class Test : MonoBehaviour
{
 
}
 

然后在Project视图中创建一个Editor文件夹,把MyEditor.cs放进去。 

 
using UnityEditor;
using UnityEngine;
 
//自定义Tset脚本
[CustomEditor(typeof(Test))] 
//请继承Editor
public class MyEditor : Editor 
{
     /// <summary>
     /// 绘制场景视图中的GUI,需要选中脚本挂载的对象才会绘制
     /// </summary>
	 void OnSceneGUI() 
	{
		 //得到test脚本的对象
		 Test test = (Test) target;
 
		 //绘制文本框
		 Handles.Label(test.transform.position + Vector3.up*2,
                    test.transform.name +" : "+ test.transform.position.ToString() );
 
	//开始绘制GUI
	Handles.BeginGUI();
 
    //规定GUI显示区域
    GUILayout.BeginArea(new Rect(100, 100, 100, 100));
 
    //GUI绘制一个按钮
    if(GUILayout.Button("这是一个按钮!"))
	{
		Debug.Log("test");		
	}
	//GUI绘制文本框
	GUILayout.Label("我在编辑Scene视图");	
 
    GUILayout.EndArea();
 
	Handles.EndGUI();
	}
 
}
 

此时,你可以把之前的Test.cs脚本绑定在任意对象身上,然后在Hierarchy视图中点击对象即可在Scene视图中看到编辑的视图啦。

最后我在说一下,在OnSceneGUI()中只能通过Handles来绘制新视图,如果你想引入GUI的元素哪么就需要使用BeginGUI()和EndGUI()组合的使用。 Handles还提供了很多编辑视图的方式,详细信息大家请看API http://docs.unity3d.com/Documentation/ScriptReference/Handles.ArrowCap.html  这里我就不在赘述。 

本文下载地址:Sina Visitor System

 今天我同事问我,上面的方法,必须鼠标选中才可以显示,能不能不选中也能显示?

Labeling objects in the scene editor view - Unity Answers

把下面的代码放在Editor目录下即可。

 
using UnityEngine;
using System.Collections;
using UnityEditor;
 
public class NewBehaviourScript : Editor {
 
    // 在场景视图中,所有对象的上方绘制对象名
	[DrawGizmo(GizmoType.SelectedOrChild | GizmoType.NotSelected)]
	static void DrawGameObjectName(Transform transform, GizmoType gizmoType)
	{   
		Handles.Label(transform.position, transform.gameObject.name);
	}
}
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值