我正在开发一款棋盘游戏 . 我的主板是使用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);
}
}
}
}
截图:
我现在要做的是缩放相机,以便将电路板放在屏幕的中央(无论屏幕大小如何) .
到目前为止我所尝试的是将下面的脚本附加到我的相机GameObject .
using UnityEngine;
using System.Collections;
public class PositionCamera : MonoBehaviour {
public float fWidth = 2.0f; // Desired width
void Start () {
float xFactor = Screen.width / 1024f;
float yFactor = Screen.height / 768f;
Camera.main.rect=new Rect(0,0,1,xFactor/yFactor);
}
}
但不幸的是,它没有用 . 董事会的一部分仍然没有出现 .
所以这里有我的问题:
-
如何让我的主板以不同的屏幕分辨率和不同的平台(android和独立)为中心?
-
如何在构建团结项目时使我的游戏窗口可调整大小?
-
对于Android平台,为什么只有一半的屏幕显示游戏?
谢谢 .
1 回答
我认为DrawingBoard的中心不在坐标系的中心(0,0,0) .
我认为你应该从-size / 2实例化为size / 2,而不是从0到size:
如果你这样做,电路板将始终位于坐标系的中心,因此它将始终位于屏幕的中心,任何分辨率(如果你的相机正在看屏幕的中心 - 你应该检查相机的位置和旋转以确保) .
此外,重要的是CubeLight和CubeDark的中心位置 . 它应该在立方体的中间 .
要调整大小和分辨率,请在“编辑/项目设置/播放器/分辨率和演示文稿”下的Unity编辑器中检查设置 .