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