C#(Unity 4.3)无法隐式转换类型'ShotScript[]';至` ShotScript';
谢谢大家!问题是我使用的是GetComponents而不是GetComponent,谢谢强> 我对编程相当陌生,我正在尝试在Unity中制作2D游戏。我在网上找到了一个非常好的教程,直到某一点(图坦卡蒙可以在这里找到)。我遇到了一个错误,不知道为什么。当我尝试在当前脚本中使用另一个脚本时(如果对任何人都有意义的话),就会发生错误。这两个脚本的名称分别为ShotScript和HealthScript,如下所示 快照脚本:C#(Unity 4.3)无法隐式转换类型'ShotScript[]';至` ShotScript';,c#,unity3d,C#,Unity3d,谢谢大家!问题是我使用的是GetComponents而不是GetComponent,谢谢 我对编程相当陌生,我正在尝试在Unity中制作2D游戏。我在网上找到了一个非常好的教程,直到某一点(图坦卡蒙可以在这里找到)。我遇到了一个错误,不知道为什么。当我尝试在当前脚本中使用另一个脚本时(如果对任何人都有意义的话),就会发生错误。这两个脚本的名称分别为ShotScript和HealthScript,如下所示 快照脚本: using UnityEngine; using System.Collecti
using UnityEngine;
using System.Collections;
public class ShotScript : MonoBehaviour {
public int damage = 1;
public bool isEnemyShot = false;
void Start () {
Destroy (gameObject, 20);
}
}
健康脚本:
using UnityEngine;
using System.Collections;
public class NewBehaviourScript : MonoBehaviour {
public int hp = 2;
public bool isEnemy = true;
void OnTriggerEnter2D(Collider2D Collider) {
ShotScript shot = collider.gameObject.GetComponents<ShotScript>();
if (shot != null) {
if (shot.isEnemyShot != isEnemy) {
hp -= shot.damage;
Destroy (shot.gameObject);
if (hp <= 0) {
Destroy(gameObject);
}
}
}
}
}
使用UnityEngine;
使用系统集合;
公共类NewBehaviourScript:MonoBehavior{
公共int hp=2;
公共利益=真;
void OnTriggerEnter2D(碰撞的R2D碰撞器){
ShotScript shot=collider.gameObject.GetComponents();
如果(快照!=null){
如果(shot.isEnemyShot!=isEnemy){
hp-=射击伤害;
摧毁(射击,游戏对象);
如果(hp错误消息显示第13行出错:
ShotScript shot = collider.gameObject.GetComponents<ShotScript>();
错误消息表示第13行出错:
ShotScript shot = collider.gameObject.GetComponents<ShotScript>();
这就是问题所在:
ShotScript shot = collider.gameObject.GetComponents<ShotScript>();
(我已将其重新格式化为更为传统的C#,但您当然可以使用您想要的任何缩进。)这就是问题所在:
ShotScript shot = collider.gameObject.GetComponents<ShotScript>();
(我已将其重新格式化为更为传统的C#,但您当然可以使用任何缩进。)您正在调用(注意复数形式),它返回一个数组(即ShotScript[]
),其中包含特定游戏对象上类型的所有匹配组件
因此,这是试图将ShotScript[]
数组分配到单个ShotScript
实例中,这是不可能的
如果您只想检索一个ShotScript
(因为您希望对象上只有1个),请使用(注意单数)方法,该方法将只返回一个实例,如果没有指定实例,则返回null
因此,将这一行更改为:
ShotScript shot = collider.gameObject.GetComponent<ShotScript>();
ShotScript shot=collider.gameObject.GetComponent();
如果您打算在同一个游戏对象上处理多个ShotScript
实例/组件,请使用中提供的修复程序/代码。您正在调用(注意复数形式),它返回一个数组(即ShotScript[]
),其中包含该特定游戏对象上类型的所有匹配组件
因此,这是试图将ShotScript[]
数组分配到单个ShotScript
实例中,这是不可能的
如果您只想检索一个ShotScript
(因为您希望对象上只有1个),请使用(注意单数)方法,该方法将只返回一个实例,如果没有指定实例,则返回null
因此,将这一行更改为:
ShotScript shot = collider.gameObject.GetComponent<ShotScript>();
ShotScript shot=collider.gameObject.GetComponent();
如果您的目的是处理同一GameObject
上的多个ShotScript
实例/组件,请使用中提供的修复程序/代码。它的意思是这样的。我假设问题出在ShotScript shot=collider.GameObject.GetComponents()GetComponents
方法是否返回数组?是的,我应该键入GetComponent=PIt表示它的意思。我假设问题出在ShotScript shot=collider.gameObject.GetComponents();
方法是否返回数组?是的,我应该键入GetComponent=P