unity编辑器模式下怎么刷新Scene视图?

liuhaopen 2017-07-05 01:37:26
我有个插件需求:
选中Image节点后,再点击Assets视图的图片后就自动设为其节点新图,这个功能是可以了,但是Scene视图里的节点没更新到新图片,看它的属性页是已经赋值成功的,要随便做一些操作引起编辑器刷新才能看到新的效果,所以我想问下怎么在代码里刷新编辑器模式下的Scene视图。代码如下:
using UnityEngine;
using UnityEditor;
using NUnit.Framework;
using UnityEditor.SceneManagement;

public class SceneEditor {

static Object LastSelectObj = null;
static Object CurSelectObj = null;
[InitializeOnLoadMethod]
static void Init()
{
SceneView.onSceneGUIDelegate += OnSceneGUI;
Selection.selectionChanged += delegate()
{
LastSelectObj = CurSelectObj;
CurSelectObj = Selection.activeObject;
UnityEngine.Object[] arr = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.TopLevel);
if (arr != null && arr.Length > 0)
{
GameObject selectObj = LastSelectObj as GameObject;
string assetPath = AssetDatabase.GetAssetPath(arr[0]);
if (selectObj != null)
{
SuyouUI.ImageBox image = selectObj.GetComponent<SuyouUI.ImageBox>();
if (image != null)
{
image.SetImage(assetPath);
//想刷新Scene视图但是没用,应该怎么弄?
UnityEditor.SceneManagement.EditorSceneManager.MarkAllScenesDirty();
SceneView.lastActiveSceneView.Repaint();
Selection.activeGameObject = LastSelectObj as GameObject;
}
}
}
};
}
}
...全文
3514 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuhaopen 2017-07-05
  • 打赏
  • 举报
回复 1
可以了,SetImage后再调用下EditorUtility.SetDirty(selectObj);就可以更新为最新图片了,十分感谢!
Alvin Chao 2017-07-05
  • 打赏
  • 举报
回复
SetDirty

2,543

社区成员

发帖
与我相关
我的任务
社区描述
Unity3D相关内容讨论专区
游戏unity 技术论坛(原bbs)
社区管理员
  • Unity3D
  • 芝麻粒儿
  • 「已注销」
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

Unity3D社区公告:

  1. 社区致力于解决各种Unity3D相关的“疑难杂症”。
  2. 社区不允许发布与Unity3D或相关技术无关内容。
  3. 社区版主邀请各位一道为打造优秀社区不懈努力。

试试用AI创作助手写篇文章吧