如何在Unity3D中以编程方式生成不存在的C#脚本

如何在Unity3D中以编程方式生成不存在的C#脚本,c#,unity3d,automation,unityscript,C#,Unity3d,Automation,Unityscript,如何生成或创建不存在的脚本(最好是C#)? 对我来说,为我的对象的动画创建方法总是非常耗时和累人 因此,我计划创建一个自定义的编辑器,在这里我可以通过动画组件引用游戏对象,输入要生成的脚本的名称,然后单击一个按钮自动生成一个C脚本,其中包含播放该对象动画的方法 我想知道是否有办法生成一个字符串,并为该字符串分配所需的代码,然后将其转换为C#脚本 我读过关于创建资产的AssetDatabase和Monoscript,但仍然没有运气 将生成的脚本附加到游戏对象上没有问题 多谢各位 [更新] 补充资料

如何生成或创建不存在的脚本(最好是C#)?

对我来说,为我的对象的动画创建方法总是非常耗时和累人

因此,我计划创建一个自定义的
编辑器
,在这里我可以通过
动画
组件引用
游戏对象
,输入要生成的脚本的名称,然后单击一个按钮自动生成一个C脚本,其中包含播放该对象动画的方法

我想知道是否有办法生成一个字符串,并为该字符串分配所需的代码,然后将其转换为C#脚本

我读过关于创建资产的
AssetDatabase
Monoscript
,但仍然没有运气

将生成的脚本附加到
游戏对象
上没有问题

多谢各位

[更新] 补充资料

基于这个组件,我想生成一个C#脚本,它有播放每个动画的方法,就像这样

using UnityEngine;
using System.Collections;

public class Level3TerrainB : MonoBehaviour {

    private string animationPrefix = "arm_Root_PlatformB|anim_";

    public void AnimatePressButtonA() {
        animation.Blend (animationPrefix + "PressButtonA");
    }

    public void AnimateUnpressButtonA() {
        animation.Blend (animationPrefix + "UnpressButtonA");
    }

    public void AnimatePressButtonB() {
        animation.Blend (animationPrefix + "PressButtonB");
    }

    public void AnimateUnpressButtonB() {
        animation.Blend (animationPrefix + "UnpressButtonB");
    }

    public void AnimateUpButtonB() {
        animation.Blend (animationPrefix + "UpButtonB");
    }

    public void AnimateDownButtonB() {
        animation.Blend (animationPrefix + "DownButtonB");
    }

    public void AnimatePressButtonC() {
        animation.Blend (animationPrefix + "PressButtonC");
    }

    public void AnimateUnpressButtonC() {
        animation.Blend (animationPrefix + "UnpressButtonC");
    }

    public void AnimateUpButtonC() {
        animation.Blend (animationPrefix + "UpButtonC");
    }

    public void AnimateDownButtonC() {
        animation.Blend (animationPrefix + "DownButtonC");
    }

    public void AnimatePressButtonD() {
        animation.Blend (animationPrefix + "PressButtonD");
    }

    public void AnimateUnpressButtonD() {
        animation.Blend (animationPrefix + "UnpressButtonD");
    }

    public void AnimateLeftUpPulleyA() {
        animation.Blend (animationPrefix + "LeftUpPulleyA");
    }

    public void AnimateRightUpPulleyA() {
        animation.Blend (animationPrefix + "RightUpPulleyA");
    }

    public void AnimateLeftUpPulleyB() {
        animation.Blend (animationPrefix + "LeftUpPulleyB");
    }

    public void AnimateRightUpPulleyB() {
        animation.Blend (animationPrefix + "RightUpPulleyB");
    }

}

我不想一次又一次地硬编码。。因为我还有很多其他级别需要设置动画。

您可以使用T4模板->

只使用一种方法并将动画名称作为参数不是更容易吗

比如:

public void Animate(string animationName) 
{
    animation.Blend (animationPrefix + animationName);
}

所以我创建了一个脚本来生成代码字符串,打印出来,然后复制粘贴到一个新脚本。

您真的需要生成一个新脚本,还是应该让现有脚本更通用?您实际上是在谈论还是?你不能用Unity生成新脚本,你需要做一个小插件。@Bart我想我真的需要,因为我的动画名称和对象彼此不相似。但是如果你能给我一些建议,我会试试看。@Snake我说的是创建一个
monobhavior
脚本。我可以知道一个迷你插件是如何或是什么类型的吗?好吧,举个例子,看看你想要生成什么(以及它如何随着输入的变化而变化)肯定会有帮助@MarkVizcarra.Yes。我试过了,但是因为我的工作流程和我正在做的游戏类型。它不合适。@MarkVizcarra为什么会有什么不同?不调用例如:AnimatePressButtonC(),而是调用Animate(“PressButtonC”),它在哪里干扰您的工作流?你能举个例子说明为什么你不能使用这个解决方案吗。它会给你一个更好的印象,你想完成什么。谢谢。老实说,我使用的一个脚本在脚本的检查器中输入一个输入,并输入方法名。它不支持带参数的方法,所以我尝试解决它。据我所知,您有一个行为脚本,用于映射按钮等输入,。。。方法名。您有固定数量的输入吗?在这种情况下,您可以对每个输入执行一个方法,并使用开关根据输入方法的实际级别调用Animate(animationName)。