gpt4 book ai didi

c# - Unity 4.6 无法将类型 `UnityEngine.Component' 隐式转换为 `DamageInterface'

转载 作者:行者123 更新时间:2023-11-30 21:50:50 27 4
gpt4 key购买 nike

我在尝试编译我的游戏时遇到问题,问题源于我的损坏界面脚本和我的射弹脚本。控制台报错代码如下。

Assets/Scripts/Projectile.cs(32,33):错误 CS0266:无法将类型 UnityEngine.Component' 隐式转换为 DamageInterface'。存在显式转换(是否缺少强制转换?)

DamageInterface.cs

using UnityEngine;
using System.Collections;
//damage interface

public interface DamageInterface {

void TakeHit (float damage, RaycastHit hit);

}

Projectile.cs

using UnityEngine;
using System.Collections;

public class Projectile : MonoBehaviour {

public LayerMask collisionMask; //detect what layer projectile collides with
float speed = 10;
float damage = 1;

public void SetSpeed(float newSpeed) {
speed = newSpeed;
}

void Update () {
float moveDistance = speed * Time.deltaTime;
CheckCollisions (moveDistance);
transform.Translate (Vector3.forward * moveDistance);
}


void CheckCollisions(float moveDistance) { //raycast to detect collision
Ray ray = new Ray (transform.position, transform.forward);
RaycastHit hit;

if (Physics.Raycast(ray, out hit, moveDistance, collisionMask)) {
OnHitObject(hit);
}
}


void OnHitObject(RaycastHit hit) {
DamageInterface damageableObject = hit.collider.GetComponent(typeof(DamageInterface)); //ERROR RESIDES HERE
if (damageableObject != null) {
damageableObject.TakeHit(damage, hit); //damage + raycast hit
}
GameObject.Destroy (gameObject); //destroy projectile if enemy layer is hit
}
}

我相信我已经使用 typeof(T) 方法来获取我的界面组件,但我肯定遗漏了一些明显的东西。谢谢

错误存在于我的 Projectile.cs 中的这一行:

DamageInterface damageableObject = hit.collider.GetComponent(typeof(DamageInterface));

最佳答案

在 Unity5.x 中,您可以获取接口(interface)如下的组件:

IInterface myInterface = gameObject.GetComponent<IInterface>();

在旧版本中你需要执行转换:

 IInterface myInterface = (IInterface)gameObject.GetComponent(typeof(IInterface));

这是因为 GetComponent 返回一个组件而您的界面不是。该错误实际上告诉您该怎么做:

存在显式转换(是否缺少强制转换?)

是的,你错过了类型转换。

关于c# - Unity 4.6 无法将类型 `UnityEngine.Component' 隐式转换为 `DamageInterface',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36084906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com