Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 统一操作系统输入检测_C#_Android_Unity3d - Fatal编程技术网

C# 统一操作系统输入检测

C# 统一操作系统输入检测,c#,android,unity3d,C#,Android,Unity3d,我正在制作一个游戏,它将在Android和Windows操作系统上使用,目前我的输入是键盘键,仅在Windows操作系统上受支持 问题是,我如何定义设备/操作系统类型以获得相关信息 输入 例子 如果是windows操作系统使用a&d键,如果是android操作系统使用touchleft&right键,那么我的脚本中可以同时支持这两个操作系统,以便在导出游戏时,两个操作系统都能正常工作 if(windows) { 左=a; 右=d; } 其他的 { 左=左触摸; 右=右触摸; } 代码 这是我当

我正在制作一个游戏,它将在Android和Windows操作系统上使用,目前我的输入是键盘键,仅在Windows操作系统上受支持

问题是,我如何定义设备/操作系统类型以获得相关信息 输入

例子 如果是windows操作系统使用
a&d
键,如果是android操作系统使用touch
left&right
键,那么我的脚本中可以同时支持这两个操作系统,以便在导出游戏时,两个操作系统都能正常工作

if(windows)
{
左=a;
右=d;
}
其他的
{
左=左触摸;
右=右触摸;
}
代码 这是我当前的密钥脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public Rigidbody rb;

    public float forwardForce = 2000f;
    public float sidewaysForce = 500f;

    void FixedUpdate()
    {
        rb.AddForce(0, 0, forwardForce  * Time.deltaTime);

        if (Input.GetKey("d") || Input.GetKey("right"))
        {
            rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
        }


        if (Input.GetKey("a") || Input.GetKey("left"))
        {
            rb.AddForce(-sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
        }

        if(rb.position.y < -1f)
        {
            FindObjectOfType<Manage>().EndGame();
        }
    }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
公共类玩家运动:单一行为
{
公共刚体;
公共浮力=2000f;
公共浮子侧向力=500f;
void FixedUpdate()
{
rb.AddForce(0,0,forwardForce*Time.deltaTime);
if(Input.GetKey(“d”)| | Input.GetKey(“right”))
{
rb.AddForce(侧向力*Time.deltaTime,0,0,ForceMode.VelocityChange);
}
if(Input.GetKey(“a”)| | Input.GetKey(“左”))
{
rb.AddForce(-sidewaysForce*Time.deltaTime,0,0,ForceMode.VelocityChange);
}
如果(径向位置y<-1f)
{
FindObjectOfType().EndGame();
}
}
}
使用可根据目标平台以不同方式编译脚本

#if UNITY_ANDROID
    left = leftTouch;
    right = rightTouch;
#else
    left = a;
    right = d
#endif
如果需要,您可以使用#elif为多个平台执行此操作

虽然我不会在这么深的层次上做。我会创建一个通用的输入类,您可以覆盖不同平台的行为,然后使用这些平台定义来更改使用该输入类的派生版本,这样您就不会一直轮询每个平台的输入

#if UNITY_ANDROID
    left = leftTouch;
    right = rightTouch;
#elif UNITY_STANDALONE_WIN
    left = a;
    right = d
#elif UNITY_STANDALONE_OSX
    left = macLeft;
    right = macRight;
#else
    left = defaultLeft;
    right = defaultRight;
#endif