我的代码中需要一个特殊的关键字,在构建之前用符号的结果替换。
例如,我想将hello替换为Debug.Log(" Hello");
根据this,MonoDevelop在2006年没有这个功能。有什么改变吗?
如果不是,是否有任何插件/外部工具实现它?
我不认为切换到另一个IDE会有所帮助,除非它可以使用unity3d的代码完成。
请不要回答宏定义是邪恶的。
更新: 我明白我的例子太抽象了。实际上,我想替换read(" name");与
var name;
name=gameObject.Find("name");
if(!name)
return;
name=name.param;
答案 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())