第四集鏈接:Unity編輯器擴(kuò)展-第四集-獲取物體的方法_菌菌巧樂(lè)茲的博客-CSDN博客
?一、本節(jié)目標(biāo)+效果展示?
1.加入撤回操作
眾所周知“撤回是ctrl+z”,但如果你前幾集仔細(xì)練習(xí)了,你會(huì)發(fā)現(xiàn)一個(gè)讓你頭痛不已的事情,用代碼改的東西沒(méi)法撤回?,F(xiàn)在就是,我們搞一下,然后能撤回。
2.我們希望,在能操作的時(shí)候,他是黑色能點(diǎn)的,如果不能操作,就是灰色不能點(diǎn)的
?
?3.加快捷鍵
二、加入撤回操作
我們平時(shí)的操作,每一步,都會(huì)被程序記錄下來(lái),但是我們代碼的操作,是不會(huì)記錄的。所以我們無(wú)法撤回。
拿出新的類(lèi):Undo,這個(gè)類(lèi)里面都是和過(guò)程記錄有關(guān)的東西,但我們今天只講一個(gè)
Undo.RecordObject(記錄哪個(gè)物體, "給這個(gè)操作起個(gè)名");
?例:
我們之前,批量修改文件名的代碼為
[MenuItem("第五集")]
static void ChangeName() {
foreach (GameObject obj in Selection.gameObjects)
{
//這里修改了物體obj的名稱(chēng)
obj.name = obj.transform.GetSiblingIndex().ToString();
}
}
?所以我們就希望記住所有obj這個(gè)物體的所有修改。
代碼變?yōu)椋?/p>
[MenuItem("第五集")]
static void ChangeName() {
foreach (GameObject obj in Selection.gameObjects)
{
//記錄物體的方法 //你打算記錄哪個(gè)物體 //給這個(gè)操作隨便起個(gè)名
Undo.RecordObject(obj, "撤回物體修改");
obj.name = obj.transform.GetSiblingIndex().ToString();
}
}
這樣就可以撤回啦。
三、黑色能點(diǎn),不能操就灰色
還記得那些年我們挖了個(gè)坑:
?這個(gè)中間的true和false沒(méi)有講。
這里問(wèn)的是,你到底是個(gè)普通的方法還是驗(yàn)證方法,如果填false就是普通方法,之前那樣,執(zhí)行的方法,如果填true,你就是驗(yàn)證普通方法能不能用的方法。
例:我們現(xiàn)在擁有的普通方法是
[MenuItem("GameObject/第五集",false,1)]
static void ChangeName() {
foreach (GameObject obj in Selection.gameObjects)
{
Undo.RecordObject(obj, "撤回物體修改");
obj.name = obj.transform.GetSiblingIndex().ToString();
}
}
但是,我們要對(duì)這個(gè)方法,進(jìn)行驗(yàn)證,需求:當(dāng)Selection.gameObjects的數(shù)量大于0的時(shí)候,就可以點(diǎn),其他時(shí)候不能點(diǎn):
//驗(yàn)證方法
//新定了一個(gè)方法,但是標(biāo)簽還是之前那個(gè),除了true和false不一樣
[MenuItem("GameObject/第五集", true,1)]
//最后返回的是true或者false,所以這里要填bool
//方法名字可以隨便起就好
static bool ControlChangeName()
{
//這部分是我們的需求,大于0就顯示可以用,其他就顯示不能用
if (Selection.gameObjects.Length > 0)
{
return true;
}
else {
return false;
}
}
//普通方法
[MenuItem("GameObject/第五集",false,1)]
static void ChangeName() {
foreach (GameObject obj in Selection.gameObjects)
{
Undo.RecordObject(obj, "撤回物體修改");
obj.name = obj.transform.GetSiblingIndex().ToString();
}
}
四、加快捷鍵
我們普通的名字是:
[MenuItem("GameObject/第五集",false,1)]
或者
[MenuItem("GameObject/第五集")]
如果你希望快捷鍵是一個(gè)字母:
[MenuItem("GameObject/第五集 _p",false,1)] ?語(yǔ)言描述就是:名字后面+空格+一個(gè)下劃線+你喜歡的字母
?如果你希望快捷鍵是shift?+ 一個(gè)字母:
[MenuItem("GameObject/第五集 #p",false,1)] 空格+井號(hào)+字母
?
??如果你希望快捷鍵是ctrl?+ 一個(gè)字母:
[MenuItem("GameObject/第五集 %p",false,1)] 空格+百分號(hào)+字母
???如果你希望快捷鍵是alt?+ 一個(gè)字母:
[MenuItem("GameObject/第五集 &p",false,1)]
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-520863.html
? 五、所有代碼
這集大可不必了吧。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-520863.html
到了這里,關(guān)于Unity編輯器擴(kuò)展-第五集-撤回操作/禁止操作/加快捷鍵的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!