Unity3D优化代码

Unity3D optimize code

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

using UnityEngine;
using System.Collections;


 public class Script1 : MonoBehaviour {

private float attackDamage = 5;

void OnCollisionEnter(碰撞项) { item.gameObject.GetComponent().伤害(攻击伤害); 禁用对象(); }

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

}

脚本 2 是同一回事。我只是改变了伤害变量

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

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

用以下方式装饰您的变量:

 [SerializeField] private int damage;

现在这是一个在 Inspector 中公开的私有变量。

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