我有c amera 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();
}
它工作正常并且可以执行我想要的操作,但是它当然不是很好的代码。我很惊讶我该怎么做呢?记住
在某些情况下,我正在调用上述函数,例如 条件匹配,然后执行上述功能并更改基准 类变量。
我想对两个继承的成员都这样做。
答案 0 :(得分:1)
请检查Microsoft的下一个链接,其中包含相关的抽象类文档和最佳做法。
https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/abstract
抽象类用作派生类的基础模板。用于执行设计规则。
abstract class YourClass
{
public int a;
public abstract void A();
}
class Example : YourClass
{
public override void A()
{
Console.WriteLine("Example.A");
base.a++;
}
}
答案 1 :(得分:0)
具有
Camera
个脚本类,用于执行清除任务,它包含这些变量和一个事件
我没有看到任何事件,看到一个返回Awake
的虚方法。
它工作正常,可以满足我的要求,但是它肯定不是很好的代码
您怎么认为呢?是的,它是可改进的,但我看到的要差得多。
我很困惑如何正确执行操作
是的,有时所有使用都会发生...
我的两分钱的建议:
SetCullingValues
并未清楚该方法还将调用Awake
。叫它SetCullingValuesAndAwake
或不叫Awake
。SetCullingValues
甚至在派生类型中声明?以基本类型声明它。 1 和 3 假定您有权访问Camera
。如果不这样做,那么您将无能为力,无法改善已有的东西。