【问题标题】:How can i have both CrossPlatformInput & Input working at the same time?如何让 CrossPlatformInput 和 Input 同时工作?
【发布时间】:2017-03-28 03:40:06
【问题描述】:

Unity 新手,想了解 C#,我一直在看一些关于让 Android 操纵杆与游戏一起工作的教程,我正在尝试让屏幕操纵杆和正常输入一起工作

所以我想我可以打字

anim.SetFloat("Turn", CrossPlatformInputManager, Input.GetAxis("Horizontal"));

anim.SetFloat("Turn", CrossPlatformInputManager & Input.GetAxis("Horizontal"));

anim.SetFloat("Turn", CrossPlatformInputManager + Input.GetAxis("Horizontal"));

显然错了! 然后我尝试将它们放在单独的行中

void Update()
{
    Turning ();
    Move();
}

void Turning()
{
    anim.SetFloat("Turn", CrossPlatformInputManager.GetAxis("Horizontal"));
    anim.SetFloat("Turn", Input.GetAxis("Horizontal"));
}

void Move()
{
    anim.SetFloat("Forward", CrossPlatformInputManager.GetAxis("Vertical"));
    anim.SetFloat("Turn", Input.GetAxis("Horizontal"));
}

但unity决定先使用Input而不是CrossPlatformInputManager

我在脑海中知道可以通过为 Input 自身创建 2 个额外的浮点数和一个混合树来解决这个问题,但为每个输入创建 2 个单独的动画似乎很愚蠢...

答案会很简单,但我不久前就开始了

另外,如果有人可以为我解释 ' , & + ' 那就太好了!

如果有人设法回复,谢谢!

【问题讨论】:

    标签: c# android unity3d


    【解决方案1】:

    您可以在#define (Ref) 中封装特定于平台的控件(或其他逻辑)。

    void Turning()
    {
        #if UNITY_STANDALONE_WIN || UNITY_EDITOR
                    anim.SetFloat("Turn", CrossPlatformInputManager.GetAxis("Horizontal"));
        #endif
        #if UNITY_ANDROID
                    anim.SetFloat("Turn", Input.GetAxis("Horizontal"));
    
        #endif
                }
    

    【讨论】:

    • 我在尝试使用它时遇到了一些错误?错误 CS0111:已定义成员“Player.Turning()”。重命名此成员或使用不同的参数类型错误 CS0111:已定义成员“Player.Move()”。重命名此成员或使用不同的参数类型所以我尝试了 void Turning() { #if UNITY_STANDALONE_WIN || UNITY_EDITOR anim.SetFloat("Turn", Input.GetAxis("Horizo​​ntal")); #endif #if UNITY_ANDROID anim.SetFloat("Turn", CrossPlatformInputManager.GetAxis("Horizo​​ntal")); #endif } 也出现错误,我应该添加其他内容吗?
    • 修改了答案,并没有看到你已经尝试过了。尝试创建两个单独的函数,例如 TurnAndroid() 和 TurnPC()。然后使用 #if define 中包含的 Update 运行其中一个。
    【解决方案2】:

    我知道这个问题很老,但我认为关于它的答案很少。我一直在寻找相同问题的解决方案,我就在这里。通过使用两种类型的实现,我得到了预期的结果。对于方向:我使用了加号运算符;对于触发动作的按钮:我使用了逻辑或运算符。例子:

    // Directionals
    anim.SetFloat("Turn", CrossPlatformInputManager.GetAxis("Horizontal") + Input.GetAxis("Horizontal"));
    
    
    // Trigger jump
    if (Input.GetKeyDown(KeyCode.Space) || CrossPlatformInputManager.GetButtonDown("Jump")) {
        // do something to jump
    }
    

    【讨论】:

      猜你喜欢
      • 2017-04-18
      • 2021-07-29
      • 2016-11-28
      • 1970-01-01
      • 2020-01-21
      • 1970-01-01
      • 2020-01-17
      • 2017-11-15
      • 2020-01-13
      相关资源
      最近更新 更多