Unity 给物体添加多个标签(有源码)

这篇具有很好参考价值的文章主要介绍了Unity 给物体添加多个标签(有源码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文简介

为了弥补Unity Tag只能添加一个标签的缺陷,特地写了一个组件Tag,和一个库TagManager用于控制与管理组件Tag。组件与库在同一个仓库内,仓库的下载地址会放在下面,可以自行下载并添加到项目中。就当作普通的脚本使用即可。
这个库简单易用,哪怕你是新手也可以轻松驾驭。

下载地址

TagManager_Unity

GitHub : https://github.com/MR-XieXuan/TagManager_Unity

使用方法

下载组件与库并安装

src文件夹下的Tag.csTagManager.cs放到项目文件夹下。

使用Tag 组件

直接使用

Tag是一个组件,可以直接拖到物体上挂载组件,使用方法与其他组建类似。直接将Tag.cs拖到物体上即可挂载。挂载后可以点击加号添加新的标签。
Unity 给物体添加多个标签(有源码)

C# 中调用Tag API

API 描述 返回值
AddTag( string tag ) 传入新的标签名tag添加新的标签 bool 是否是新的标签
IsTag( string tag ) 传入标签名tag 查看是否有这个标签 bool 是否有这个标签
RemoveTag( string tag ) 传入标签名 tag 去除这个物体的特定标签 bool 是否有这个标签

示例代码:

/// <summary>
/// 当 粒子 碰到碰撞体后
/// </summary>
/// <param name="other"> 被碰物体 </param>
private void OnParticleCollision(GameObject other)
{
	// 当粒子碰撞到 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 是一个静态对象,不用挂载到任何一个物体上,只需要挂载在项目下即可。
使用 TagManager 的增方法,会将物体添加到TagManager的缓存中,以方便获取。

C# 中调用 TagManager API

API 描述 返回值
ObjAddTag(GameObject obj, string tag) 给物体obj添加一个标签tag 如果这个物体没有Tag组件,则会自动挂载Tag组件 void
ObjDelTag(GameObject obj, string tag) 删除物体obj的标签tag 如果这个物体没有Tag组件那么什么都不会发生 void
GetTagObjsInManager(string tag) 获取在 TagManager 缓存中有这个标签tag所有的对象 List<GameObject>
ObjHasTag(GameObject obj, string tag) 查看这个物体obj是否有这个标签tag这个方法与TagManager缓存无关 bool 是否有这个标签
ObjHasTagInManager(GameObject obj, string tag) 查看这个物体obj在TagManager缓存中是是否有这个标签,此方法仅与TagManager缓存有关,与物体本身的标签无关 bool 在TagManager 缓存中是否有这个标签
Find(List list, List tagS) 从一个 物体的列表list找 拥有多个标签tagS符合 的物体 List 符合的物体列表
Find(List list, string tag) 从一个 物体的列表list找拥有特定标签tag 的物体 List 符合的物体列表

示例代码

/// <summary>
/// 当 粒子 碰到碰撞体后
/// </summary>
/// <param name="other"> 被碰物体 </param>
private void OnParticleCollision(GameObject other)
{
	// 当粒子碰撞到 Tag 为 Enemy 的物体打印该物体被攻击 
    if (TagManager.ObjHasTag(other, "Enemy"))
    {
        Debug.Log("** " + other.name + "被攻击!");
    }
}

联系作者

联系作者

本库还处于 Beta 阶段,如果有更新我会在本博客发布更新说明。如果使用上遇到了困难或者发现了Bug,欢迎联系作者提交你的发现。

文章来源地址https://www.toymoban.com/news/detail-426654.html

E-mail: [ Mr_Xie_@outlook.com ]
GitHub: [ https://github.com/MR-XieXuan }
个人私站: [ https://main.mrxie.xyz/ ]

 如果本文对您有帮助的话,可以给本文点一个赞👍或者是收藏本文📧。也可以点击关注Follow我。你的每一个赞可以给作者非常大的鼓励。  如果遇到困难,欢迎联系作者,你可以私聊作者或者添加作者QQ、发送电子邮件向作者寻求帮助。也可以在下方评论区向大家提问。你的问题如果在评论区被解决也可以给其他遇到同样问题的一个参考。 作者不易,期待你的关注❤。

到了这里,关于Unity 给物体添加多个标签(有源码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity切割图片:把一张图片中的物体裁成多个单独的游戏物体

    首先选中需要切割的图片素材,将Inspector面板中的 Sprite Mode 由默认的 Single改为Multiple ; 然后点击 Sprite Editor ; 第一步之后便会弹出下例面板,然后 点击Slice菜单 ,继续点击,便 会自动被分割好 ,最后 点击右上角的Apply 。 点击Apply后在右下角会弹出一个小的面板,你可以

    2024年02月05日
    浏览(43)
  • unity添加刚体后,穿过物体坠落

    至于原因,好像是两个实体的东西才能碰撞,如果只给球设置一个刚体(rigidbody),别的没设置,就好像是除了球之外都是虚拟的,自然就被球给忽视了。再把地面也设置一个刚体,这样它俩都是实体了,自然就会产生碰撞,相互阻拦。 给穿透的物体添加一个碰撞就好了,比

    2024年02月11日
    浏览(44)
  • Unity单个物体绑定多个相机在轨道上移动,录制不同角度视频

    打开包管理器 下载cinemachine插件 使用dolly track 创建轨道 右侧可以删减关键点,注意调整y坐标 把前面的轨道拖到path中,注意这里的 speed要设定不为0才会动 根据需求设定,Follow这个设为cart才跟着走(Dolly Enable勾上),Look At设定为Cart才会让相机跟着轨迹的变化视角转换(设定

    2024年04月15日
    浏览(75)
  • unity给子物体动态添加boxcollider(碰撞盒)

    在工作中遇到过给物体拍照截图的功能,由于物体是动态加载并且大小不一,但是要求拍的照片正好被物体填充,因此需要动态计算物体大小,从而进行调整,这种方法也可以进行相机检测物体是否在视野内。使用方法非常简单,只需要将要计算的物体放到空物体的子物体下

    2024年02月11日
    浏览(37)
  • 【Unity3D】使用 FBX 格式的外部模型 ( 向 Unity 中添加 FBX 模型 | 向 Scene 场景中添加 FBX 模型 | 3D 物体渲染 | 3D 物体材质设置 )

    Unity 中使用的 3D 模型格式为 FBX , 使用如下建模软件 可制作该类型模型 : 3Dmax Maya ZBrush Cinema4D Blender 建模完成后 , 将 3D 模型导出为 FBX ( .fbx ) 格式 即可在 Unity 中使用 ; 在 Project 文件窗口 中的 Asstes 目录 下 , 创建一个模型目录 Models , 将 模型文件直接从文件系统中拖到该目录中

    2023年04月15日
    浏览(82)
  • unity多个物体多种材质切换效果实现方法(方法比较笨,还有不足之处多多指导)

    多种材质切换:获取物体的MeshRenderer组件上所有的材质球,并将其存放到数组中;创建另一个数组存放需要新材质球,通过循环遍历将将需要替换的材质球存放在创建好的数组内。 比如说同时给象棋的棋盘和棋子切换不同材质,具体步骤如下: 1.分别导入棋盘、棋子模型;黑

    2024年02月17日
    浏览(50)
  • Unity3D-场景中3D物体添加点击事件

    Unity3D - 场景中3D物体添加鼠标点击事件 鼠标点击3D物体触发,Unity从本质上来说有两种:一种是通过事件(event)触发,一种是通过射线(ray)判断穿过的物体触发。这两种触发的原理是不同的,不论哪种触发都必须满足触发的要求才可以,既然原理不同,触发的要求也不一样

    2024年02月08日
    浏览(87)
  • 十、Three场景实现多个物体的合并

    目的 产品需求是让物体的光柱墙包含一个多边形的区域,二而我的多边形只能使用原型,方向,多边形。那么再研究的时候就需要将这些多边形合并成为一个形状,那么就行实现了。 原先的图形 如上图,是两个mesh组成的。首先寻找mesh合并的方法。 在网上找了一下,能够

    2024年01月17日
    浏览(46)
  • unity当前物体朝向某个物体的方法

    汇总一下以上三种朝向某个物体的方法: 使用Transform.LookAt方法:这个方法可以将当前物体的正面指向目标物体。使用方法如下: 使用Quaternion.LookRotation方法:这个方法可以根据两个向量的方向计算出物体的旋转。使用方法如下: 使用Vector3.RotateTowards方法:这个方法可以将当

    2024年02月09日
    浏览(49)
  • 3D建模之blender3.0如何添加并调出物体属性框

    blender3.0用起来颇为不那么友好,最基本的两个操作,我竟然半天没找着,还是上网查的答案,在此先记着了。 首先添加物体: 按shift+A键,可以调出添加物体的窗口,实际上你也可以用鼠标去点,只不过这个“添加”菜单比较隐晦,在主菜单的下方,眼神稍微不好点的就看不

    2024年02月11日
    浏览(84)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包