我有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是一回事。我只是更改损坏变量
答案 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.你需要做的就是设置预制的值。一个地方可以设置它们。然后你可以实例化预制件,他们将使用给定的值。