前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >零基础入门 40:Inspector禁用RectTransform属性修改

零基础入门 40:Inspector禁用RectTransform属性修改

作者头像
韩东吉
发布2018-10-16 11:01:07
2.3K0
发布2018-10-16 11:01:07
举报

Hello,今天给大家分享一下如何通过代码实现Inspector面板禁止修改RectTransform组件上的属性。

当然这种禁用并不是真正意义上的我这个RectTransform就完全不能修改数值了,而是通过点击组件后,在Inspector面板是无法修改了。

效果如图

如上图可以看出,我禁止了对PosX和PosY以及Anchors的修改,所以这些属性在Inspector面板上是灰态无法修改的。

那如何做到呢?进入正题


首先创建一个脚本,放在Editor目录下

然后为脚本增加以下代码

Using UnityEditor代表当前要引用的一些方法是在该库内的接口,并且将该脚本放在Editor文件夹下,可以保证不影响出包之类的操作。

然后InitializeOnLoad的作用是为了让脚本在Editor模式下也可以加载运行,之所以这里加这个,是为了下一偏做铺垫的。

然后增加一个菜单代码

这样在Help里就有了可以帮助我们点击禁用的入口了

然后增加一个DrivenRectTransformTracker

DrivenRectTransformTracker是Unity提供用来驱动RectTransform的,里面有一些禁用Api

在不同的禁用属性之间可以通过|来进行分隔

然后增加以下代码

代码逻辑如下

using UnityEngine;

using UnityEditor;

[InitializeOnLoad]

public class DisableRectTransform : MonoBehaviour

{

static DrivenRectTransformTracker tracker = new DrivenRectTransformTracker();

[MenuItem("Help/禁用RectTransform属性")]

static void DisableR()

{

var obj = Selection.activeGameObject;

if (obj != null)

{

if (obj.GetComponent<RectTransform>() != null)

{

tracker.Add(obj, obj.GetComponent<RectTransform>(), DrivenTransformProperties.AnchoredPosition | DrivenTransformProperties.Anchors);

}

}

}

}

然后先选择一个Image

然后打开Help菜单,选择image,然后点击禁用

然后Image如下

此时无论直接在Inspector面板输入数值还是拖动Posx的箭头都无法通过Inspector面板修改RectTransform上禁用的属性。

好了,这就是今天分享的内容,大家下期见~

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 韩东吉的Unity杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档