
如果预先不想在编辑器中设置tag,就直接代码自动在编辑器中生成所需要添加的tag,很简单 代码如下:
/// <summary>
/// 检查tag列表中是否有tag,没有该tag添加此tag
/// </summary>
/// <param name="tag">所要设设置的tag</param>
public static void SetGameObjectTag(GameObject gameObject, string tag)
{
if (!UnityEditorInternal.InternalEditorUtility.tags.Equals(tag)) //如果tag列表中没有这个tag
{
UnityEditorInternal.InternalEditorUtility.AddTag(tag)//在tag列表中添加这个tag
}
gameObject.tag = tag
}
我正好也遇到了这个问题。
https://docs.unity3d.com/ScriptReference/GameObject-tag.html Unity3D官网中提到这么一段话:A tag can be used to identify a game object. Tags must be declared in the Tags and Layers manager before using them.
所以在使用tag之前需要在tags&layers管理器中先声明。
如下所示,
然而很不巧,我希望在程序中实现动态添加tag,上面这种方法并不能解决我的问题。
至于如何动态添加tag,代码我就不贴了,还请自行百度"unity 动态添加 tag",很多博客文章都有给出代码。
首先创建一个“立方体”与一个“粒子系统”,立方体在粒子可以碰撞到的范围内。
选择粒子系统,在属性中“Tag”中选择“Add Tag”添加一个“aa”。
勾选“shape”,其中的shape设置为“Box”。
勾选“Collision”,选择“Word”,勾选“Send Collision Message”。
创建脚本,添加“OnParticleCollision”方法,通过aa这个tag判断粒子碰撞。
把脚本放在立方体上。
现在ctrl+p运行游戏,我们发现console中会显示我们设置的碰撞提示,这就表示粒子系统粒子碰撞检测成功了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)