Unity給物體新增多個Tag的實現

2022-09-26 01:15:12 字數 1837 閱讀 8686

在unity中,我們經常通過給物體新增標籤來判斷這個物體是不是我們想要的

但是unity預設只能新增乙個標籤,那如果我們要給乙個物體新增多個標籤應該怎麼辦

首先,我們定義乙個tag.cs類,這個類用來儲存物體的tag資訊

public class tags : monobeh**iour

然後建立乙個單例類tagmanager.cs用來管理tag

public class tagmanager : monobeh**iour

private void awake()

else }}

在tagmanager中增加儲存tag的list和對應物體的dictionary

public list tagslist = new list();

[showininspector]

public dictionary> tagsdictionary = new dictionary>();

但是inspector視窗中修改dictionary中的值後,**時會自動清除資料,所以還要給dictionary賦值

private void inittags()

}然後我們通過在inspector視窗修改list來修改物體的taf

新建乙個extensions.cs,我們在這個類裡面寫一些擴充套件方法

public static class extensions }}

return true;

}//給物體增加 tag

public static void addtag(this gameobject gameobject, params string tags)

else }}

}//給物體刪除tag

public static void removetag(this gameobject gameobject,params string tags)

else

} }}

這樣像下面這樣直接呼叫即可

gameobject.addtag("player","tag1");

gameobject.hastag("player","tag1");

gameobject.removetag("player");

最後tagmanager.cs中通過標籤獲取所有物體

public list findobjswithtag(string tag)

debug.log("不存在標籤為" + tag + "的物體");

return null;

}測試一下

建立兩個掛有tags.cs指令碼的物體

public class tags : monobeh**iour

void update()}}

兩個物體具有的tag分別為tag1,tag2和tag1

tagmanager只有tag1

執行但是這樣當退出play模式後,list中的資料會被清空,所以可以使用scriptableobject進行持久化儲存也可以使用odin等外掛程式直接對字典進行序列化

新建乙個tagsasset.cs

[createassetmenu]

public class tagsasset : scriptibiqqqlableobject

將原先**中tagslist相關的**修改為tagsasset.tags並修繕一下即可

匯入odin外掛程式,使tagmanager繼承自serializedmonobeh**iour

[nonserialized, odinserialize]

public dictionary> tagsdictionary = new dictionary>();

關於odin的高階可以看

Unity 實現給物體動態新增事件

using system.events using system.eventsystems go is the gameobject which need add event go 是物體,因為eventtrigger是unity中的乙個元件,我們要用新增元件的方式來給物體新增事件觸發元件 type...

git 給遠端庫 新增多個url位址

目錄 主頁 一般來說,我們為git增加遠端庫,一般都是 git remote add origin 你可以使用真實的位址來代替 但是你可能想要把你的本地的git庫,既push到github上,又push到開源中國的git osc上,怎麼解決呢。有人可能會用兩個甚至多個遠端庫,即再新增乙個遠端庫git...

表單新增多個檔案

其實方法很簡單這樣只能選擇乙個檔案,這樣就可以選擇多個檔案了,怎麼樣,很方便吧。如果不考慮ie的話,可以使用這個方法。關於js自行生成多個input的就算了吧,懶得看,懶的寫,能簡單就簡單吧。對了,還有乙個重要的問題,選擇多個檔案以後,如何用jquery獲取選中的檔案的標題等屬性呢?jquery好像...