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 的坦克。您需要做的就是为预制件设置值。一个地方来设置它们。然后你可以实例化预制件,它们将使用给定的值。
我有 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 的坦克。您需要做的就是为预制件设置值。一个地方来设置它们。然后你可以实例化预制件,它们将使用给定的值。