unity3d 对于像jump [closed]这样的运动变量,返回类型是什么

jw5wzhpr  于 2022-11-30  发布在  其他
关注(0)|答案(3)|浏览(168)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题吗?**通过editing this post添加详细信息并阐明问题。

去年关闭了。
Improve this question

public const ??? jump = Input.GetKey(KeyCode.Space);

用什么来替换问号?

66bbxpm5

66bbxpm51#

正如this answer已经解释得完全正确:不管是什么类型(bool你都不能!
您不能简单地将一个在runtime上确定的方法返回值赋给一个const,它需要是编译时常量
然而,如果我没有完全错的话,您的实际目标似乎是为该调用提供某种快捷方式别名
在这种情况下,您可以使用property,如

public static class Aliases
{
    public static bool jump => Input.GetKey(KeyCode.Space);
}

然后到处使用,例如

if(Aliases.jump)

得双曲余切值.
如果这有任何进一步的使用超过只是使用Input.GetKey(KeyCode.Space)虽然是非常值得怀疑的...

oknwwptz

oknwwptz2#

Input.GetKey和所有相关的方法都是bool类型,它们告诉你 * 在特定的帧上 * 是否按下了某个键。你不能将它们赋给常量,因为常量必须在编译代码时定义,你不能将任何变量或方法赋给常量。
如果你去掉常量,只写public bool jump,那么你会得到一个变量,它被设置成你赋予它的帧上的Input.GetKey,所以要么它永远不会改变,要么它只是一个额外的操作,做的和写Input.GetKey()一样的事情。
你说你希望能够从另一个类调用它,但是你可以从任何地方调用Input方法,它们是静态的。如果你试图同步当你在脚本之间按下空格键时发生的事情,那么你可以在两个脚本的Update方法中选中Input.GetKey。所有的更新都会运行每个激活脚本的每个帧,所以他们看到的Input的值总是相同的。

rsaldnfx

rsaldnfx3#

我已经检查了方法的签名。它是
公共静态bool GetKey(字符串名称)
所以我会告诉你,你错过了一个布尔类型来代替???:)

相关问题