有没有办法将宏定义添加到MonoDevelop?

时间:2014-04-26 15:31:56

标签: macros mono

我的代码中需要一个特殊的关键字,在构建之前用符号的结果替换。

例如,我想将hello替换为Debug.Log(" Hello");

根据this,MonoDevelop在2006年没有这个功能。有什么改变吗?

如果不是,是否有任何插件/外部工具实现它?

我不认为切换到另一个IDE会有所帮助,除非它可以使用unity3d的代码完成。

请不要回答宏定义是邪恶的。


更新: 我明白我的例子太抽象了。实际上,我想替换read(" name");与

var name;
name=gameObject.Find("name");
if(!name)
    return;
name=name.param;

1 个答案:

答案 0 :(得分:0)

1)每个脚本都应该声明所有需要的变量+一个名为“self”的变量。

2)他们应该是公开的。

3)

public static function set_var(target,name:String,value)
{
    var fi=typeof(target).GetField(name);
    fi.SetValue(target,value);
}
public static function read(name:String,target):String
{
    set_var(target,"self",target);
    return "var rtmp=self.gameObject.GetComponent(\""+name+"\");"+"if(!rtmp)return;"+name+"=rtmp.param;"; 
}

4)eval(read("name",this));

5)据我所知,它不会在统一C#

中起作用

6)可能,set_var可以由赋值

替换

更好的解决方案:

    var component_names = ["hello","thing","foo"];

    var component;
    for(var name:String in component_names)
    {
        component = gameObject.GetComponent(name);
        if(!component)
            return;
        set_var(this,name,component.param);
    }

(需要第一个的set_var())