网站首页 网站地图
网站首页 > 手机游戏 > 游戏如何上下居中

游戏如何上下居中

时间:2026-03-17 12:08:42

在游戏开发中,“上下居中” 是一种常见的布局方式,通常用于让某个元素(如按钮、文本、图片等)在屏幕的顶部和底部都居中对齐。具体实现方式取决于你使用的开发工具或框架。

以下是几种常见平台和语言下的实现方法:

一、HTML + CSS(网页游戏)

示例:在网页中让一个元素上下居中

<!DOCTYPE html>
<html>
<head>
  <style>
    .container {
      width: 100%;
      height: 100vh;
      display: flex;
      justify-content: center; /* 左右居中 */
      align-items: center;     /* 上下居中 */
    }
    .centered {
      width: 200px;
      height: 100px;
      background-color: lightblue;
      text-align: center;
      line-height: 100px; /* 使文字居中 */
    }
  </style>
</head>
<body>
  <div >
    <div >居中</div>
  </div>
</body>
</html>

说明:

  • display: flex 用于创建弹性盒模型。
  • justify-content: center 使内容左右居中。
  • align-items: center 使内容上下居中。

二、Unity(C#)

示例:在 Unity 中让一个 GameObject 上下居中

1. 使用 RectTransformSetPosition 方法

using UnityEngine;

public class CenterOnScreen : MonoBehaviour
{
    public RectTransform rectTransform;

    void Start()
    {
        // 设置位置为屏幕中心
        float screenWidth = Screen.width;
        float screenHeight = Screen.height;
        float centerX = screenWidth / 2f;
        float centerY = screenHeight / 2f;

        rectTransform.position = new Vector2(centerX, centerY);
    }
}

2. 使用 TransformTranslateToCenter 方法(Unity 2020+)

using UnityEngine;

public class CenterOnScreen : MonoBehaviour
{
    public Transform target;

    void Start()
    {
        // 将目标对象移动到屏幕中心
        target.TranslateToCenter();
    }
}

三、JavaScript(WebGL / Phaser)

示例:在 Phaser 中让一个精灵上下居中

let config = {
    type: Phaser.AUTO,
    width: 800,
    height: 600,
    scene: {
        preload: preload,
        create: create,
        update: update
    }
};

function preload() {
    this.load.image('player', 'assets/player.png');
}

function create() {
    let player = this.add.image(400, 300, 'player');
    player.setOrigin(0, 0); // 设置原点为左上角
    player.setTransform(); // 自动调整大小和位置
}

function update() {
    // 如果需要动态调整位置,可以在这里写代码
}

四、其他平台

1. Android(Java/Kotlin)

使用 Viewlayout_gravitygravity 属性

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <View
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@color/red"
        android:layout_gravity="center" />

    <View
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:background="@color/blue"
        android:layout_gravity="center" />
</LinearLayout>

2. iOS(Swift)

let view = UIView()
view.frame = CGRect(x: 0, y: 0, width: 200, height: 100)
view.center = view.center
view.backgroundColor = .red
view.translatesAutoresizingMaskIntoConstraints = false
view.topAnchor.constraint(equalTo: view.superview!.topAnchor).isActive = true
view.leftAnchor.constraint(equalTo: view.superview!.leftAnchor).isActive = true
view.rightAnchor.constraint(equalTo: view.superview!.rightAnchor).isActive = true
view.bottomAnchor.constraint(equalTo: view.superview!.bottomAnchor).isActive = true
view.center.x = view.superview!.center.x
view.center.y = view.superview!.center.y

总结

平台 实现方式
HTML + CSS display: flex; justify-content: center; align-items: center;
Unity RectTransform.SetPosition()TranslateToCenter()
JavaScript TranslateToCenter()setOrigin()
Android layout_gravity="center" + gravity="center"
iOS center.x = center.y = ...

如果你有具体的开发环境或语言,可以告诉我,我可以为你提供更精准的代码示例!