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



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

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

据此,MonoDevelop在2006年还没有这个功能。有什么变化吗?

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

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

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


更新:我明白我的例子太抽象了。事实上,我想取代读("名称");带有

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

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) 据我所知,它在unity 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())

最新更新