Unity3D优化代码

时间:2016-07-06 21:48:58

标签: c# unity3d unityscript

我有2个对象在行为方面做同样的事情,但唯一不同的是造成的伤害。现在我有2个脚本是彼此的复制粘贴。相同的功能同样如此。如何制作1个脚本来优化我的工作而不是重复我的东西?感谢。

using UnityEngine;
using System.Collections;


 public class Script1 : MonoBehaviour {

private float attackDamage = 5;

void OnCollisionEnter(碰撞项目)     {         。item.gameObject.GetComponent()损伤(attackDamage);         disableObs();     }

public void disableObs()
{
    gameObject.SetActive(false);
}

}

脚本2是一回事。我只是更改损坏变量

2 个答案:

答案 0 :(得分:1)

您可以将损坏变量更改为公共,并在将脚本添加到不同对象时通过检查器设置该变量。或者,如果您在实例化时通过代码进行更改,只需将setDamage(damage)函数调用到特定对象:

gameobject.GetComponent<Script1>().setDamage(damage1);
gameobject2.GetComponent<Script1>().setDamage(damage2);

答案 1 :(得分:1)

用以下内容装饰你的变量:

 [SerializeField] private int damage;

现在这是一个在Inspector中曝光的私有变量。

关于工作流程,您可以将尽可能多的Script1拖动到许多对象上,它们将拥有自己的Script1操作集。但目的是你可以让步兵的伤害值为1,坦克伤害为100.你需要做的就是设置预制的值。一个地方可以设置它们。然后你可以实例化预制件,他们​​将使用给定的值。