【发布时间】:2019-01-29 09:48:07
【问题描述】:
我有执行剔除任务的 camera script 类,它包含这些变量和一个事件:
protected float CullDetailSmall = 25.0f;
protected float CullDetailMedium = 80.0f;
protected float CullDetailLarge = 130.0f;
protected float CullDetailExtraLarge = 250.0f;
protected float CullDetailXExtraLarge = 450.0f;
protected float CullDetailXXExtaLarge = 650.0f;
public virtual void Awake(){
//culling apply logic using above variable values
}
camera script 类是CamFly 和CamWalk 的基类。现在我想更改基类camera script 变量值,所以我在每个类中都创建了这个函数(CamFly 和CamWalk)
public void SetCullingValues(int cullDetailSmall
, int cullDetailMedium
, int cullDetailLarge
, int cullDetailExtraLarge
, int cullDetailXExtraLarge
, int cullDetailXXExtaLarge
, int CullFloor
)
{
base.CullDetailSmall = cullDetailSmall;
base.CullDetailMedium = cullDetailMedium;
base.CullDetailLarge = cullDetailLarge;
base.CullDetailExtraLarge = cullDetailExtraLarge;
base.CullDetailXExtraLarge = cullDetailXExtraLarge;
base.CullDetailXXExtaLarge = cullDetailXXExtaLarge;
base.CullFloor = CullFloor;
base.Awake();
}
它工作正常,做我想做的事,但它肯定不是一段好的代码。我很惊讶我怎么能正确地做到这一点?记住
我在某些情况下调用了上面的函数,比如如果一些 条件匹配然后执行上述函数并更改基数 类变量。
第二个我想为两个继承的成员这样做。
【问题讨论】:
-
我不明白你的问题。 “肯定不是一段好代码”是什么让你这么认为?
-
除了
base标识符是多余的,我认为这段代码没有任何问题。为什么你认为它不好? -
当我想要两个类中的相同功能时,它不应该是多余的。可以看到两个方法两个冗余代码。
-
为什么不在基类中添加
SetCullingValues? -
Awake()不是“事件”,而是 Unity 调用的消息。因此,您不需要从其他方法调用它。您应该正确命名该方法,并且只在Awake中使用它...会更干净