2016-03-09 51 views
-1

我是新来安装统一5.我有下面的代码的一些问题:如何将Unity 4的代码转换为Unity 5?

void OnTriggerEnter(Collider other) { 
     var air = other.collider.gameObject.GetComponent<DamageManager>(); 
     if(air){ 
      air.HP += HPFill; 
     } 
    } 
+1

所以什么问题?控制台中的任何错误? –

+0

@PawełMarecki:错误:'UnityEngine.Component.collider”已过时:'物业对撞机已被弃用。改用GetComponent ()。 (UnityUpgradable)” –

+0

那么,为什么你不使用'GetComponent ()'呢? –

回答

1

更换var air = other.collider.gameObject.GetComponent<DamageManager>()var air = other.GetComponent<Collider>().gameObject.GetComponent<DamageManager>();

void OnTriggerEnter(Collider other) 
    { 
     var air = other.GetComponent<Collider>().gameObject.GetComponent<DamageManager>(); 

     if (air) 
     { 
      air.HP += HPFill; 
     } 
    } 
+0

其他已经是对撞机组分和组件具有GetComponent构件方法所以无需达到为游戏对象。 – Everts

+0

我知道这是事实。我翻译了他在Unity 5中所看到的内容。other.GetComponent ();应该这样做,但我提供了他提供的确切的翻译。 – Programmer

0
var air = other.GetComponent<DamageManager>(); 

在你的代码对撞机实际上是多余的因为其他已经是对撞机组件。这就像要求参考文件达到自己。也不需要使用gameObject引用,因为Collider是一个Component,然后包含一个GetComponent方法。

团结的新版本中删除所有组件的参考,但变换和游戏对象,因为他们总是在那里。