Scene的实时追踪显示
最近在处理酷跑类型游戏时,遇到一个功能需求:需要在摄像机实时追踪角色显示(Game)的同时,Scene同时实时显示NPC的位置状态等信息?
这个问题有三种解决方法,各有利弊:
1)使用unity系统内置的方法,此时直接激活即可:快速三次点击目标游戏对象即可。
这种方法的缺点是不灵活,一旦鼠标有其他动作,就会打断追踪;
方法2/3需要自己来扩展编辑器(思想是一样的):
2)打开一个新面板,用来驱动刷新:
public class SceneRealTimeFocusEditorWindow : EditorWindow
{
SceneView.OnSceneFunc _delegate;
static SceneRealTimeFocusEditorWindow _windowInstance;
[MenuItem("Window/RealTimeFocus")]
static void RealTimeFocus()
{
if (_windowInstance == null)
{
_windowInstance = EditorWindow.GetWindow(typeof(SceneRealTimeFocusEditorWindow)) as SceneRealTimeFocusEditorWindow;
_windowInstance._delegate = new SceneView.OnSceneFunc(OnSceneFunc);
SceneView.onSceneGUIDelegate += _windowInstance._delegate;
}
}
void OnDestroy()
{
if (_delegate != null)
{
SceneView.onSceneGUIDelegate -= _delegate;
}
}
public static void OnSceneFunc(SceneView sceneView)
{
_windowInstance.CustomSceneGUI(sceneView);
}
void CustomSceneGUI(SceneView sceneView)
{
if (Selection.activeTransform != null && Selection.activeTransform.root != null && active)
{
SceneView.lastActiveSceneView.pivot = Selection.activeTransform.position;
//SceneView.lastActiveSceneView.Repaint();
SceneView.RepaintAll();
}
}
private bool active = false;
void OnGUI()
{
active = GUILayout.Toggle(active, "Active RealTimeScene");
}
}
此种方法的优点:打开面板,可实现当前选中的任意对象的Scene实时追踪
3)Scene中的按钮扩展:
[CustomEditor(typeof(MonoBehaviour), true)]
public class SceneRealTimeFocusEditor : Editor
{
public void OnEnable()
{
active = false;
}
public void OnDisable()
{
active = false;
}
private bool active = false;
void OnSceneGUI()
{
if (Selection.activeTransform != null)
{
Handles.BeginGUI();
GUILayout.BeginArea(new Rect(0, 0, 200, 200));
if (!active)
{
if (GUILayout.Button("Active Real Time Trace", GUILayout.Height(30)))
{
active = true;
}
}
else
{
if (GUILayout.Button("Close Real Time Trace", GUILayout.Height(30)))
{
active = false;
}
}
GUILayout.EndArea();
Handles.EndGUI();
if (active)
{
SceneView.lastActiveSceneView.pivot = Selection.activeTransform.position;
SceneView.lastActiveSceneView.Repaint();
}
}
}
}
本方法的缺点是:若针对MonoBehaviour及其子类,则当选中的目标对象有多个子物体、多个基于monobehavoiur的component时,按钮显示会有问题;若不针对MonoBehaviour及其子类,则只能针对特定类型物体选中时实时追踪。
Scene的实时追踪显示的更多相关文章
- CSS实时编辑显示
方法 CSS实时编辑显示:通过display:block让css文本显示出来,再加上contentEditable使文本可编辑 <!DOCTYPE html> <html> & ...
- asp.net MVC SignalR 与数据库 实时同步显示
asp.net MVC SignalR 与数据库 实时同步显示 错误:未启用当前数据库的 SQL Server Service Broker,因此查询通知不受支持.如果希望使用通知,请为此数据库启用 ...
- iOS 日志获取和实时浏览器显示日志
https://juejin.im/entry/576252855bbb500063e51c7d iOS 日志获取和实时浏览器显示日志
- EV录屏 --- 免费无水印,集视频录制与直播功能于一身的桌面录屏软件, 支持录屏涂鸦、实时按键显示、视频体积压缩等实用功能
https://www.ieway.cn/index.html 免费无水印,集视频录制与直播功能于一身的桌面录屏软件,支持录屏涂鸦.实时按键显示.视频体积压缩等实用功能 EVCapture 3.9.7 ...
- 四轴飞行器1.4 姿态解算和Matlab实时姿态显示
原创文章,欢迎转载,转载请注明出处 MPU6050数据读取出来后,经过一个星期的努力,姿态解算和在matlab上的实时显示姿态终于完成了. 1:完成matlab的串口,并且实时通过波形显示数据 2:添 ...
- cool 软件 —— Carnac(实时桌面显示按键)
1. Carnac 下载地址:Carnac, the Magnificent Keyboard Utility 使用说明:carnac – 在屏幕实时显示按键操作
- vdbench测试实时可视化显示
前言 前一段时间碰到一个系统,用rados bench 去跑都还比较正常,但是一跑数据库就非常慢,测试工具会抛出延时过大的提示,经过排查发现,云平台中有一台虚拟机还运行着备份数据库的服务,而这个备份软 ...
- opencv+python视频实时质心显示
利用opencv+python实现以下功能: 1)获取实时视频,分解帧频: 2)将视频做二值化处理: 3) 将视频做滤波处理(去除噪点,获取准确轮廓个数): 4)识别图像轮廓: 5)计算质心: 6)描 ...
- MFC For循环中实时更新显示Edit内容
在for(){}循环中如果有处理函数,然后需要显示的时候,简单的UpdateData(false);是不行的: for (int i=0;i<10000;i++) { m_nT1.Format( ...
随机推荐
- HDU 1166 敌兵布阵 线段树的基本应用——动态区间和问题
题目: http://acm.hdu.edu.cn/showproblem.php?pid=1166 简单题,1A了,这个好像就是传说中的“点树”. 设当前结点表示线段[left, right],编号 ...
- SQL(笔试题)网站上的广告位是轮播的,每天某一广告位最多可轮播的广告数量是有限制的,比如A广告位,每天只能轮播三个广告,但销售人员在销售广告位时并不考虑此限制,要求查询出合同表中,超过广告位轮播数量的合同。
合同表 Orders OrderID Positioncode Startdate Enddate 1 A 2006-11-01 2006-11-03 2 C 2006-11-02 2006-11-0 ...
- uva 812 Trade on Verweggistan
题意: 给w个货架, 每个货架上有bi个货物, 每次只能拿最上面的货物, 每个货物有个价值, 所有货物的售价均为10. 问:能获得的最大利润, 以及能获得这个利润需要多少个货物. (有多种组合时只需输 ...
- cmd下运行java文件时,找不到或无法加载主类的解决方法
最近再看java,却被一个看似很基础的hellorworld头疼了十几分钟,百度了一下,若你在cmd下编辑及运行.java文件时报错,解决方案如下,如图所示:
- Error Code: 1064 – You have an error in your SQL syntax解决几个方法
本文转自 http://www.anyiwa.com/?p=1066 Error Code: 1064 – You have an error in your SQL syntax解决几个方法 十一月 ...
- OA学习笔记-003-Hibernate3.6配置
一.jar包:核心包, 必须包, jpa, c3p0, jdbc antlr-2.7.6.jarc3p0-0.9.1.jarcommons-collections-3.1.jardom4j-1.6.1 ...
- statspack系列7
原文:http://jonathanlewis.wordpress.com/2006/12/27/analysing-statspack-7/ 作者:Jonathan Lewis 这是一段Oracle ...
- WPA Supplicant 用法
本文译至:https://wiki.archlinux.org/index.php/WPA_Supplicant_%28%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%29 ...
- C#设计模式(23种设计模式)
转自:http://www.cnblogs.com/abcdwxc/archive/2007/10/30/942834.html 创建型: 1. 单件模式(Singleton Patte ...
- (转载)JavaScript中的Window窗口对象
(转载)http://www.ijavascript.cn/jiaocheng/javascript-window-65.html 例子: <html> <head> < ...