在构建之前,我需要在代码中使用一个特殊的关键字来替换为符号的结果。
例如,我希望将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())