Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.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# 在Unity3D中,如何使我的电路板保持在不同屏幕大小的中心位置?_C#_Android_Windows_Unity3d - Fatal编程技术网

C# 在Unity3D中,如何使我的电路板保持在不同屏幕大小的中心位置?

C# 在Unity3D中,如何使我的电路板保持在不同屏幕大小的中心位置?,c#,android,windows,unity3d,C#,Android,Windows,Unity3d,我正在开发一个棋盘游戏。我的电路板是使用C#脚本动态创建的,如下所示 /// <summary> /// Draws the board of the figure. Call the Load event of the form. /// </summary> public void DrawingBoard() { CubeDark.transform.localScale = new Vector3(3

我正在开发一个棋盘游戏。我的电路板是使用C#脚本动态创建的,如下所示

    /// <summary>
    /// Draws the board of the figure. Call the Load event of the form.
    /// </summary>
    public void DrawingBoard()
    {    
        CubeDark.transform.localScale = new Vector3(3f,2f,3f);      
        CubeLight.transform.localScale =  new Vector3(3f,2f,3f);
        for(int i = 0; i < _boardSize; i++)
        {
            for(int j = 0; j < _boardSize; j++)
            {
                if((i+j)%2 == 0)
                {
                    UnityEngine.Object.Instantiate(CubeDark,new Vector3(i*3,_boardHeight,j*3), Quaternion.identity);    
                }
                else
                {
                    UnityEngine.Object.Instantiate(CubeLight,new Vector3(i*3,_boardHeight,j*3), Quaternion.identity);
                }
            }
        }           
    }
但不幸的是,它没有起作用。董事会的一部分仍然没有出现

所以我的问题来了:

  • 对于不同的屏幕分辨率和不同的平台(android和单机版),我如何使我的主板居中
  • 在构建unity项目时,如何调整游戏窗口的大小
  • 对于android平台,为什么只有一半的屏幕显示游戏?

谢谢。

我想你的绘图板的中心不在坐标系(0,0,0)的中心

我认为您应该实例化从-size/2到+size/2,而不是从0到size:

UnityEngine.Object.Instantiate(CubeLight,new Vector3(i*3-_boardSize/2,_boardHeight,j*3-_boardSize/2), Quaternion.identity);
如果您这样做,电路板将始终位于坐标系的中心,因此它将始终位于屏幕的中心,以任何分辨率(如果您的相机正看着屏幕的中心-您应该检查相机的位置和旋转以确保)

此外,重要的是,你的CubeLight和CubeDark的中心在哪里。它应该在立方体的中间。

要调整大小和分辨率,请检查Unity Editor中“编辑/项目设置/播放器/分辨率和演示”下的设置

UnityEngine.Object.Instantiate(CubeLight,new Vector3(i*3-_boardSize/2,_boardHeight,j*3-_boardSize/2), Quaternion.identity);