对于任何有经验的开发团队/ c#来说,这应该是一个简单的问题,但是我缺乏经验迫使我去问。
我最近从More Mountains购买了Infinite Runner Engine - 这个脚本应该启动我的项目,但我正在努力......
我正在尝试将他们的代码与我自己的代码分开,所以一旦有更新,我可以轻松地交换它而不会造成(太多)损害。
以下是问题:
我们以LevelManager脚本为例:
using MoreMountains.Tools;
namespace MoreMountains.InfiniteRunnerEngine
{
public class LevelManager : Singleton<LevelManager>
{
// default methods
protected virtual void PrepareStart() {}
protected virtual IEnumerator PrepareStartCountdown() {}
public virtual void LevelStart() {}
.... and so on...
}
}
为了避免更新损坏我想到这样做
using MoreMountains.Tools;
using MoreMountains.InfiniteRunnerEngine;
namespace MyNamespace.Test
{
public class TestLevelManager : LevelManager
{
// custom property
public GameObject TestGameObject;
// Overrides to existing methods
protected override void PrepareStart() {}
protected override IEnumerator PrepareStartCountdown() {}
public override void LevelStart() {}
.... and so on...
}
}
我意识到我不能以这种方式向TestLevelManager类添加任何自定义方法。
有没有人就如何正确组织代码提出建议?
解决方案是简单地在其类中使用现有方法并仅覆盖已存在的方法,然后为我需要的方法创建其他类吗? 声音太脏了。
我最终可能会:
这将是我将使用的额外方法的第3个示例文件 使用MoreMountains.Tools; 使用MoreMountains.InfiniteRunnerEngine;
namespace MyNamespace.Test
{
public class TestLevelManagerExtra : Singleton<TestLevelManagerExtra>
{
// store relation to my overriding class
public TestLevelManager testLevelManager;
// when class is initiated it should find
// my class and store it in testLevelManager variable
public virtual void Start()
{
testLevelManager = gameObject.GetComponent<TestLevelManager>();
}
// custom method to be used outside of this class
// it should let me access properties in TestLevelManager
public void AccessTestGameObject(bool state)
{
testLevelManager.SetActive(state);
}
public void CustomMethod1() {}
}
}
对于提问时使用的错误术语表示不满,正如我所说,我不擅长C#。