0

我有一个 C# 游戏,我希望让我们的脚本编写者编写如下所示的小代码文件,以便我们可以修补和修改我们的一些系统。

namespace Game.Creatures
{
    public class Zombie : Creature
    {
        public override float MovementRange { get { return 12; } }
        public override float AttackDamage { get { return 5; } }
        public override float TurnSpeed { get { return 2; } }
        public override float WalkSpeed { get { return 1.7f; } }
        public override float RunSpeed { get { return 2.5f; } }
        public override float TimeBetweenAttacksSeconds { get { return 0; } }
        public override bool CanAttack { get { return false; } }

        public Zombie(Vector3 in_Position, Vector3 in_Scale)
        {
            Health = MaxHealth = 40;
            CurrentAi = new Ai_Simple(this) {RecalcPathIn = -1};
        }

        public override void Update(GameTime in_GameTime) { base.Update(in_GameTime); }
        public override void Render(GameTime in_GameTime) { base.Render(in_GameTime); }
    }
}

如您所见,该文件使用了游戏中的类型和方法,这是可能的还是任何运行时创建的代码都需要限制在其自身中?

如果它也可以在 360 上运行,则将获得奖励。

编辑:Paint.net 有一个代码实验室插件可以做到这一点,所以我知道它一定是可能的。

4

1 回答 1

2

是否可以动态编译和执行 C# 代码片段?处理同样的事情。能够引用您的类只是意味着您要引用的程序集之一应该是其中的一个Creature。例如

var parameters = new CompilerParameters(
 new[] { "mscorlib.dll", "System.Core.dll", "MyAssembly.dll" }, "foo.exe", true);
于 2013-06-16T13:21:25.350 回答