本文簡介
為了彌補(bǔ)Unity Tag只能添加一個標(biāo)簽的缺陷,特地寫了一個組件Tag,和一個庫TagManager用于控制與管理組件Tag。組件與庫在同一個倉庫內(nèi),倉庫的下載地址會放在下面,可以自行下載并添加到項(xiàng)目中。就當(dāng)作普通的腳本使用即可。
這個庫簡單易用,哪怕你是新手也可以輕松駕馭。
下載地址
TagManager_Unity
GitHub : https://github.com/MR-XieXuan/TagManager_Unity
使用方法
下載組件與庫并安裝
把src
文件夾下的Tag.cs
與TagManager.cs
放到項(xiàng)目文件夾下。
使用Tag 組件
直接使用
Tag是一個組件,可以直接拖到物體上掛載組件,使用方法與其他組建類似。直接將Tag.cs拖到物體上即可掛載。掛載后可以點(diǎn)擊加號添加新的標(biāo)簽。
C# 中調(diào)用Tag API
API | 描述 | 返回值 |
---|---|---|
AddTag( string tag ) | 傳入新的標(biāo)簽名tag 添加新的標(biāo)簽 |
bool 是否是新的標(biāo)簽 |
IsTag( string tag ) | 傳入標(biāo)簽名tag 查看是否有這個標(biāo)簽 |
bool 是否有這個標(biāo)簽 |
RemoveTag( string tag ) | 傳入標(biāo)簽名 tag 去除這個物體的特定標(biāo)簽 |
bool 是否有這個標(biāo)簽 |
示例代碼:
/// <summary>
/// 當(dāng) 粒子 碰到碰撞體后
/// </summary>
/// <param name="other"> 被碰物體 </param>
private void OnParticleCollision(GameObject other)
{
// 當(dāng)粒子碰撞到 Tag 為 Enemy 的物體打印該物體被攻擊
if ( other.TryGetComponent<tag>(out var com) )
{
if( com.IsTag("Enemy") ){
Debug.Log("** " + com.name + "被攻擊!");
} else { }
} else { }
}
建議搭配 TagManager Library使用
使用TagManager Library可以更方便的管理 Tag 組件。
使用 TagManager Library
在 C# 中使用
TagManager
是一個靜態(tài)對象,不用掛載到任何一個物體上,只需要掛載在項(xiàng)目下即可。
使用 TagManager 的增方法,會將物體添加到TagManager的緩存中,以方便獲取。
C# 中調(diào)用 TagManager API
API | 描述 | 返回值 |
---|---|---|
增 | ||
ObjAddTag(GameObject obj, string tag) | 給物體obj 添加一個標(biāo)簽tag 如果這個物體沒有Tag組件,則會自動掛載Tag組件 |
void |
刪 | ||
ObjDelTag(GameObject obj, string tag) | 刪除物體obj 的標(biāo)簽tag 如果這個物體沒有Tag組件那么什么都不會發(fā)生 |
void |
查 | ||
GetTagObjsInManager(string tag) | 獲取在 TagManager 緩存中有這個標(biāo)簽tag 所有的對象 |
List<GameObject> |
ObjHasTag(GameObject obj, string tag) | 查看這個物體obj 是否有這個標(biāo)簽tag 這個方法與TagManager緩存無關(guān) |
bool 是否有這個標(biāo)簽 |
ObjHasTagInManager(GameObject obj, string tag) | 查看這個物體obj 在TagManager緩存中是是否有這個標(biāo)簽,此方法僅與TagManager緩存有關(guān),與物體本身的標(biāo)簽無關(guān) |
bool 在TagManager 緩存中是否有這個標(biāo)簽 |
Find(List list, List tagS) | 從一個 物體的列表list 找 擁有多個標(biāo)簽tagS 符合 的物體 |
List 符合的物體列表 |
Find(List list, string tag) | 從一個 物體的列表list 找擁有特定標(biāo)簽tag 的物體 |
List 符合的物體列表 |
示例代碼文章來源:http://www.zghlxwxcb.cn/news/detail-426654.html
/// <summary>
/// 當(dāng) 粒子 碰到碰撞體后
/// </summary>
/// <param name="other"> 被碰物體 </param>
private void OnParticleCollision(GameObject other)
{
// 當(dāng)粒子碰撞到 Tag 為 Enemy 的物體打印該物體被攻擊
if (TagManager.ObjHasTag(other, "Enemy"))
{
Debug.Log("** " + other.name + "被攻擊!");
}
}
聯(lián)系作者
聯(lián)系作者
本庫還處于 Beta 階段,如果有更新我會在本博客發(fā)布更新說明。如果使用上遇到了困難或者發(fā)現(xiàn)了Bug,歡迎聯(lián)系作者提交你的發(fā)現(xiàn)。
文章來源地址http://www.zghlxwxcb.cn/news/detail-426654.html
GitHub: [ https://github.com/MR-XieXuan }
個人私站: [ https://main.mrxie.xyz/ ]
?如果本文對您有幫助的話,可以給本文點(diǎn)一個贊??或者是收藏本文??。也可以點(diǎn)擊關(guān)注Follow我。你的每一個贊可以給作者非常大的鼓勵。 ?如果遇到困難,歡迎聯(lián)系作者,你可以私聊作者或者添加作者QQ、發(fā)送電子郵件向作者尋求幫助。也可以在下方評論區(qū)向大家提問。你的問題如果在評論區(qū)被解決也可以給其他遇到同樣問題的一個參考。 作者不易,期待你的關(guān)注?。
到了這里,關(guān)于Unity 給物體添加多個標(biāo)簽(有源碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!