雪千渔Blog

  • 首页
  • 写写代码
    • dotNet
    • C++
    • Lua
    • Visual Basic
    • Java
    • Android
    • Web
  • DCC
    • Maya
    • Maya-Plug
    • AfterEffect
    • AfterEffect-Plug
    • PhotoShop-Plug
  • 游戏制作
    • Unity3D
    • UnrealEngine
    • 经验杂谈
    • 游戏设计
    • 自研引擎
    • 效果实现
  • 其他
    • 乱七八糟
    • 软件工具
    • 留言板
    • 自制素材
    • 关于我
  • 世界的尽头
雪千渔blog
唯有热爱,能抵漫长岁月
  1. 首页
  2. GameDev
  3. Unity3D
  4. 正文

UnityEditor开发之修改脚本Gizmos存放路径

2021年8月3日 739点热度 0人点赞 0条评论

在Unity的API文档中写到,需将Gizmos图标放到Assets/Gizmos下,Gizmos一般都是作为脚本的附件,而放在Assets/Gizmos文件夹中并不好和脚本一起移动,因为Gizmos文件夹又不像Editor以及Pluging被unity所识别,所以有了此问题和解决方案。

实际Icon填写的路径是项目中以Assets文件夹为根的绝对路径,所以以下是成立的。

Gizmos.DrawIcon("this.transform.position, Assets/Scripts/Gizmos/image.png");

但由于脚本的位置可能往往不能确定,就需要获取一个脚本所在的文件夹,使用UnityEditor.AssetDatabase

这里稍微说一下AssetDatabase.FindAssets这个方法,要求传入一个filter字符串,除了Asset名之外,还可以增加label与type。

"Ground t:texture2d" 获取一个type为texture2d,名为Ground的Asset。

我们的脚本是继承于MonoBehaviour的,所以type应该为MonoScript

private static string GetGizmosDir(string scriptName)
{
    var paths = UnityEditor.AssetDatabase.FindAssets($"{scriptName} t:{nameof(MonoScript)}");
    var scriptFullName = UnityEditor.AssetDatabase.GUIDToAssetPath(paths[0]);
    var folder = System.IO.Path.GetDirectoryName(scriptFullName).Replace('\\', '/');
    return $"{folder}/Gizmos";
}

 

 

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: UnityEditor
最后更新:2021年8月3日

JomiXedYu

一名游戏玩家。

点赞
< 上一篇
下一篇 >

文章评论

取消回复

*

code

JomiXedYu

一名游戏玩家。

分类
  • AfterEffect / 6篇
  • AfterEffect-Plug / 1篇
  • Android / 1篇
  • C++ / 13篇
  • dotNet / 12篇
  • Lua / 4篇
  • Maya / 2篇
  • Maya-Plug / 2篇
  • Office-VSTO&VBA / 2篇
  • Unity3D / 14篇
  • UnrealEngine / 4篇
  • Visual Basic / 8篇
  • Web / 2篇
  • 乱七八糟 / 2篇
  • 效果实现 / 2篇
  • 经验杂谈 / 2篇
  • 自制素材 / 3篇
  • 自研引擎 / 1篇
  • 计算机图形学 / 1篇
  • 软件工具 / 4篇
友情链接
  • DorinXL
  • 小博博客
  • 秋橘斋

COPYRIGHT © 2014-2021 雪千渔Blog. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

辽ICP备20006894号-1