C# 为什么Visual Studio要重写对GetComponent的成员取消引用<&燃气轮机;()?
我试图让程序检测玩家正在碰撞的特定物品的C# 为什么Visual Studio要重写对GetComponent的成员取消引用<&燃气轮机;()?,c#,visual-studio,unity3d,C#,Visual Studio,Unity3d,我试图让程序检测玩家正在碰撞的特定物品的标签 我的代码是 using UnityEngine; public class PlayerCollision : MonoBehaviour { void OnCollisionEnter(PlayerCollision collisionInfo) { if (collisionInfo.collider.tag == "ground") { print(&
标签
我的代码是
using UnityEngine;
public class PlayerCollision : MonoBehaviour
{
void OnCollisionEnter(PlayerCollision collisionInfo)
{
if (collisionInfo.collider.tag == "ground")
{
print("You hit the ground");
}
}
}
VisualStudio不断变化
if (collisionInfo.collider.tag == "ground"
到
if(collisionInfo.GetComponent().tag==“ground”)
我的问题是,我如何让程序检测玩家与什么发生碰撞
及
为什么Visual Studio不断更改我的代码?如果使用void OnCollisionEnter(Collision col)
,那么您可以执行If(col.gameObject.CompareTag(“ground”)
您的类型PlayerCollision
从哪个继承,从哪个最终继承
这里有一个过时/现在已弃用的属性,该属性声明
CS0619“Component.collider”已过时:“属性collider已被弃用。”。改为使用GetComponent()
您的VisualStudio似乎有一些设置,可以自动应用过时代码建议的更改。也许这甚至是由Visual Studio Tools for Unity本身完成的
但是,如果您使用了正确的签名,那么所有这些都不是问题:
它不是OnCollisionCenter(PlayerCollision)
强>
private void OnCollisionEnter (Collision collisionInfo)
{
if(collisionInfo.collider.CompareTag("ground")
{
...
}
}
如果出于任何奇怪的原因,您不是指Unity内置消息,而是实际上想要一个带有签名的方法OnCollisionCenter(PlayerCollision)
(这里似乎不是这样,只是为了完整性),那么您应该选择不同的名称或简单地使用
collisionInfo.gameObject.CompareTag("ground")
因为碰撞
和组件
都有一个属性.gameObject
;),所以它甚至不会引起这个问题
通常,您应该更喜欢使用而不是直接使用字符串比较=
<如果您传递了一个拼写错误/不存在的标记,而该标记只是默默地失败,从而使调试变得不必要地困难,那么code>CompareTag将抛出一个错误。Visual Studio不会自行更改或重写代码(至少不是这样):您必须通过下拉菜单明确选择使用“代码修复”。您是否安装了任何VS扩展?您使用的是什么版本的VS?collisionInfo.collider的类型是什么?我在你发布的class PlayerCollision
中没有看到它的定义(在monobhavior
中也没有)@Dai这是我第一天使用unity和c#所以我不知道如何回答这个问题。你能帮我把它哑下来吗?你可以发布一个屏幕记录或视频,显示你输入c#代码,而VS在没有你要求的情况下更改代码吗?@Dai很抱歉,但现在代码本身没有更改,它给了我错误严重性代码描述项目文件行抑制状态错误CS0619“Component.collider”已过时:“属性collider已被弃用。”。改用GetComponent()。(UnityUpgradable)'Assembly CSharp C:\Users\slayp\Desktop\Making unity stuff\New unity Project\Assets\Collision.cs 7 Active
collisionInfo.gameObject.CompareTag("ground")