自研项目的随记

发表于2019-07-03
评论1 4.9k浏览

一、GUI.Skin

  因为做Editor工具涉及到了Editor中GUI相关绘制,于是就顺带把GUISkin弄明白。挺好懂的,通过在工程界面邮件Create一个GUISkin,就能在其中给指定样式设置属性,然后动态加载Skin,再GUI.Skin = Skin,或者Skin.GetStyle("样式名")...就能把诸如默认的GUI.Label改成自己设置的样式了。

   

Qyw0zDXXoKhx7jZmP4PP.jpg

 

二、AssetDataBase.loadAssetAtPath<>()等

       之前使用AssetDataBase加载资源,使用习惯了的Resource.Load方式,所以导致总加载不了资源。然后查证,发现AssetDataBase加载的路径,一定要加"Assets/"前缀,和".xx"文件类型后缀名...  

0yQTa1BGPPiq13sfRIg5.jpg

 

三、EditorWnd和Editor类的关联,及OnGUI()里更新Editor对象的override方法。

       在做一个自定义预览弹窗时,发现该类继承Editor后,在EditorWnd类中使用CreateEditor创造出来,该类Override的一些方法并没自动被调用...结果必须在EditorWnd类中通过OnGUI()这种刷新方法中调用...

 

四、自定义Preview弹窗遇到的坑。

       如三、是打算自定义出一个Preview弹窗,搜索到的资料是关于如public override void OnInteractivePreviewGUI(Rect r, GUIStyle background)重载Preview相关virtual方法,然后通过PreviewRenderUtility这个官方没有说明的类进行预览。可结果试了很久,我都没弄出合适结果,因为这个类对象的m_Camera是看不到的,不知道它怎么去对准位置,然后渲染出预览...最后我通过新建一个Camera,在场景中通过它的GameObject调整摄像机参数,再使用RenderTexture产出贴图,GUI绘制贴图实现了预览小窗口。

2pJxMCCp3GXvIe6eeqWP.jpg
saSZoSE5QF4ppsjx6Hmx.jpg

 

u3Y34ocREzesNCN3cYal.jpg

 

 

 

五、实现Editor弹框显示Sprite精灵。

   然后一时兴起,想做一个放到Editor里面显示的桌面精灵,发现默认窗口背景没法透明,因此多加了张背景图。这个主要难点在GUI.DrawTextureWithTexCoords方法,它的坐标计算有点麻烦,有点像shader里的对贴图的Tilling和offset,是将图片长宽做Normalize了的。左下角(0f,0f),右上角为(1.0f,1.0f),但Sprite的行数和宽数又同数组下标,即为行数为10,宽数为10,每个Sprite的索引地址是0f - (1.0f - 0.1f)...

 

LF5paHb8P8CJogUdU601.jpg
xeA1qnTYyYctOBVZuWc1.jpg

 

 

 

  • 允许他人重新传播作品,但他人重新传播时必须在所使用作品的正文开头的显著位置,注明用户的姓名、来源及其采用的知识共享协议,并与该作品在磨坊上的原发地址建立链接
  • 可对作品重新编排、修改、节选或者以作品为基础进行创作和发布
  • 不可将作品进行商业性使用
  • 需在以作品基础上创作的演绎作品上适用相同类型的知识共享许可条款

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: