unity控制台 -- 动态编译c#

12 篇文章 0 订阅

  在游戏开发过程中,调试是一件很让人头痛的事情,使用unity和c#开发的时候,总是会打开游戏----->发现有问题----->关游戏----->加log----->加测试代码----->开游戏----->测试,看log。或者打断点,在IDE里调试代码。又或者是有一个GM系统可以执行各种已经写好的指令,总之,很麻烦就是了,且没有时效性。
  使用脚本语言开发的时候,可以直接在控制台中输入一行代码,就可以查看数据,或者执行一个命令,于是就想,能不能用c#实现类似的功能呢。
  不想看废话的可以直接跳到XFramework–Console,里面有demo,运行后按键盘的~键位就可以调出控制台。

1.动态编译

  c#动态编译的大致流程如下

public object ExcuteCode()
{
    CSharpCodeProvider codeProvider = new CSharpCodeProvider();
    CompilerParameters compilerParameters = new CompilerParameters();
    Assembly[] assemblys = AppDomain.CurrentDomain.GetAssemblies();
    foreach (var item in assemblys)
    {
        compilerParameters.ReferencedAssemblies.Add(item.Location);
    }
    compilerParameters.GenerateExecutable = false;
    compilerParameters.GenerateInMemory = true;
	string code = "你的代码,写好类,写好方法,后面用反射调用";
    CompilerResults cr = codeProvider.CompileAssemblyFromSource(compilerParameters, code);

    if (cr.Errors.HasErrors)
    {
        var msg = string.Join(Environment.NewLine, cr.Errors.Cast<CompilerError>().First().ErrorText);
        Debug.LogError(msg);
        return null;
    }
    else
    {
        Assembly objAssembly = cr.CompiledAssembly;
        object dyClass = objAssembly.CreateInstance("你的类名");
        var methodInfo = dyClass.GetType().GetMethod("你的方法名");
        methodInfo.Invoke()
    }
}

  这样,我们就已经可以在游戏运行的时候写一段代码来调用工程中的函数了,但是仅仅这样肯定不行,我希望可以在控制台中一行行的敲代码。最后实现了下面的效果。

2.控制台已完成的功能

  执行一个方法,当有trace的时候控制台上也会显示 请添加图片描述
  传参也是可以的,这里因为用的Vector3,还需要先using一下命名空间UnityEngine
请添加图片描述
  获取某个变量的值,并存下
请添加图片描述
  执行已经写好的GM命令
请添加图片描述

3.总结

  目前的这个控制台是用UGUI做的,且动态编译不能在手机上执行,只有PC上可以。但是看log和gm命令都是可以的,ugui的控制台在手机上用起来太麻烦,打算基于udp做一个脱离于unity的控制台,这样就算是手机包也可以在pc上方便的看log以及发送gm指令了。

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity Mega-Fiers是一款强大的Unity插件,它为开发者提供了许多功能和工具,以帮助他们创建优秀的游戏体验。 首先,Unity Mega-Fiers具有强大的形变功能。开发者可以通过该插件实现各种形状的变换,包括弯曲、挤压、拉伸等。这为游戏中的人物、物体和环境提供了更多的自由度和个性化选项,使其更具动态和真实感。 其次,Unity Mega-Fiers还提供了高度的粒子系统控制能力。开发者可以使用该插件来创建更加逼真的粒子效果,并具有更准确的控制。这包括粒子的大小、颜色、速度等方面,使游戏中的特效更加出色。 另外,Unity Mega-Fiers还支持可编程网格。这意味着开发者可以通过脚本来控制网格的生成和变形,从而实现各种复杂的效果。无论是地形生成、水体模拟还是其他物体的变形,都可以通过该插件实现,并使游戏更加逼真和具有个性化。 除了以上功能,Unity Mega-Fiers还提供了其他诸多辅助工具,如动画控制、特效编辑等,为开发者提供了更丰富的开发选项和提升游戏质量的手段。 总结而言,Unity Mega-Fiers是一款功能强大的Unity插件,为开发者提供了丰富的形变、粒子系统控制和可编程网格等功能。它能够大幅提升游戏的真实感和品质,并为开发者提供更多的创作空间和个性化选项。无论是初学者还是有经验的开发者,都能够从中受益,并创造出出色的游戏作品。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值