我试着做一个脚本,当玩家经过一个物品时,它会激活它在玩家身上的效果。但是这个错误出现了:这是我的代码:`
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
public class Bonus : MonoBehaviour
{
public string name;
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.CompareTag("Player"))
{
collision.SendMessage(name, null, SendMessageOptions.RequireReceiver);
Destroy(gameObject);
}
}
}
`
我已经试过添加
SendMessageOptions.RequireReceiver
但没有成功
1条答案
按热度按时间csga3l581#
错误试图告诉您的是:
在您的
collision
的GameObject
上,没有附加任何组件来实现一个方法,该方法调用了name
的值(在您的示例中为doubleSpeed
)。默认情况下,该选项已经是
SendMessageOptions.RequireReceiver
,如果没有,则会收到该错误消息。接收方法可以选择不使用任何参数来忽略参数。如果options设置为SendMessageOptions.RequireReceiver,则在任何组件都未拾取消息时将输出错误。
如果您想忽略没有接收器的情况,则可以传入
SendMessageOptions.DontRequireReceiver
通常,不要使用
SendMessage
,而是直接获取组件并调用方法