Unity3D的Object类重载了类型隐式转换运算符bool(其他类型转换一样可以被重载,不仅仅是bool),所以TestFunction(transform) 实际上调用的是这个函数,这个重载函数的作用是判断当前Object是否非空,这也符合输出的信息(也就是***e)。好吧,不小心踏入了这个陷阱,而且编辑器在编辑阶段也不会有任何警告。那如果想正常调用应该如何做呢?只用这样:
TestFunction(transform as object);
因为System.object并没有重载类型转换运算符bool,输出如下(我把这个脚本挂在MainCamera下了):
In the Object parameter function, value info is: Main Camera (UnityEngine.Transform)