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

时间:2014-08-20 09:58:50

标签: c# unity3d automation unityscript

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

为我创建对象动画的方法总是耗时且累人。

所以我打算创建一个自定义Editor,我可以在其中引用GameObjectAnimation组件,输入要生成的脚本的名称,然后单击一个按钮自动生成一个C#脚本,其中包含播放该对象动画的方法。

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

我已阅读AssetDatabaseMonoscript关于创建资产但仍然没有运气。

将生成的脚本附加到GameObject

没有问题

谢谢。

[更新] 附加信息 This is my animations

所以基于这个组件,我想生成一个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");
    }

}

我不想再次硬编码,再次......因为我有许多其他级别可以动画。

3 个答案:

答案 0 :(得分:2)

使用一种方法并将动画名称作为参数?

是不是更容易

类似的东西:

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

答案 1 :(得分:0)

答案 2 :(得分:0)

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