Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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# “统一样本项目”;滚一个球;在iPad上不工作(球不移动)?_C#_Ios_Unity3d - Fatal编程技术网

C# “统一样本项目”;滚一个球;在iPad上不工作(球不移动)?

C# “统一样本项目”;滚一个球;在iPad上不工作(球不移动)?,c#,ios,unity3d,C#,Ios,Unity3d,Unity在这个链接上有一个示例项目“Roll a Ball”: 我已经能够构建并使它在我的Mac上100%运行良好。我能够使用键盘上的箭头键移动球。一切都在Mac平台上工作 然而,当我使用相同的代码在我的iPad上构建和部署这个游戏时,我注意到当我用手指试图移动球时,球根本不会移动。(唯一的好处是所有立方体都旋转良好) 所以,我的问题是,我是否需要修改球的C#脚本,使其适用于iPad(尽管该脚本已经适用于Mac) 以下是舞会的C#脚本: using System.Collections; us

Unity在这个链接上有一个示例项目“Roll a Ball”:

我已经能够构建并使它在我的Mac上100%运行良好。我能够使用键盘上的箭头键移动球。一切都在Mac平台上工作

然而,当我使用相同的代码在我的iPad上构建和部署这个游戏时,我注意到当我用手指试图移动球时,球根本不会移动。(唯一的好处是所有立方体都旋转良好)

所以,我的问题是,我是否需要修改球的C#脚本,使其适用于iPad(尽管该脚本已经适用于Mac)

以下是舞会的C#脚本:

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

public class PlayerController : MonoBehaviour
{

    public float speed;
    public Text countText;
    public Text winText;

    private Rigidbody rb;
    private int count;

    void Start ()
    {
        rb = GetComponent<Rigidbody>();
        count = 0;
        SetCountText ();
        winText.text = "";
    }

    void FixedUpdate ()
    {
        float moveHorizontal = Input.GetAxis ("Horizontal");
        float moveVertical = Input.GetAxis ("Vertical");

        Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);

        rb.AddForce (movement * speed);
    }

    void OnTriggerEnter(Collider other) 
    {
        if (other.gameObject.CompareTag ( "Pick up"))
        {
            other.gameObject.SetActive (false);
            count = count + 1;
            SetCountText ();
        }
    }

    void SetCountText ()
    {
        countText.text = "Count: " + count.ToString ();
        if (count >= 12)
        {
            winText.text = "You Win!";
        }
    }
}
使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共类玩家控制器:单行为
{
公众浮标速度;
公共文本;
公共文本;
私人刚体;
私人整数计数;
无效开始()
{
rb=GetComponent();
计数=0;
SetCountText();
winText.text=“”;
}
无效固定更新()
{
float moveHorizontal=Input.GetAxis(“水平”);
float moveVertical=Input.GetAxis(“垂直”);
Vector3移动=新Vector3(水平移动,0.0f,垂直移动);
rb.AddForce(移动*速度);
}
无效对撞机(对撞机其他)
{
if(other.gameObject.CompareTag(“拾取”))
{
other.gameObject.SetActive(false);
计数=计数+1;
SetCountText();
}
}
void SetCountText()
{
countText.text=“Count:+Count.ToString();
如果(计数>=12)
{
winText.text=“你赢了!”;
}
}
}
*有趣的是,我刚刚注意到类型输入有方法“GetTouch()”。也许,我可以尝试在iPad上使用这种方法?起初,我希望上面C#脚本中适用于Mac的通用代码也适用于iPad?也许,我的假设是错误的,我需要为iPad编写一组不同的代码“GetTouch()”?好的,我认为这是一个可能的解决方案,现在我会试试*


顺便说一句,从2017年2月起,我使用的是最新的Unity(版本5.5.2f1)和最新的XCode(版本8.2.1)。我的iPad上的iOS也是最新版本(版本10.2.1)。

我从未在Unity中为iPad创建过任何东西,但根据您提供的描述,我认为问题不在您的脚本中。我建议您检查输入管理器中的所有内容是否正确链接 (编辑->项目设置->输入)

我认为问题在于游戏没有检测到你在iPad上的输入。您可以尝试向球添加x轴的恒定速度,如果球移动,您可以在Input Manager中集中精力

此外,请检查此链接:
您必须更改输入设置。我不知道在哪里可以找到它们,但是你可以改变输入“水平”和“垂直”。您应该进一步了解这一点,因为您还可以添加输入,这对于您想要控制游戏的所有控制非常有用


哦,看看前面的答案就知道了。

谢谢你的评论。当然,让我调查一下。Mac和iPad处理“用户输入”的方式似乎有所不同。我希望我文章中的通用代码对这两种平台都足够好。但是,让我看看你的文件,看看。。。。谢谢。:-)没问题。我希望我能添加一个我自己的样本,但我没有ipad,也不能测试它们。虽然我的英语很抱歉。谢谢你的输入。我试试看。我注意到类型输入有一个方法“GetTouch()”,这可能是我可以尝试在iPad上使用的方法。然而,我希望Unity的目的是“一次编写通用代码并为所有平台构建”,而不是“为不同平台编写不同的方法来读取‘用户输入’……”,但是,让我试试你的建议,看看它是如何进行的。谢谢。这也是事实:因为Touch类是在触摸屏幕时实例化的对象,所以您可以尝试
foreach(Touch t in Input.Touch){}
并获取该触摸的属性。
foreach(Touch Touch in Input.Touch){if(Touch.phase==Touch phase.start){touchStart=true;}如果(touch.phase==TouchPhase.end){touchStart=false;}如果(touchStart&ground){myRigidBody.velocity=new Vector2(myRigidBody.velocity.x,JumpForce);}
例如在我的例子中