
“PHP-Raylib 是 Raylib 游戏开发框架的 PHP 绑定,允许开发者使用 PHP 语言创建 2D/3D 游戏、交互式应用和图形界面。它通过扩展(extension)或纯 PHP 封装的方式连接 PHP 和 Raylib 核心库,使 PHP 开发者无需切换语言即可快速实现图形化应用。
1. PHP 语言优势
2. 功能完整性
3. 跨平台支持
Raylib 是一款轻量级、跨平台的开源游戏开发框架,采用 C 语言编写,旨在简化视频游戏和交互式图形应用的开发。它以简单、高效、便携为核心设计理念,适合快速原型开发、教育或小型游戏项目。
1. 轻量与简单
2. 跨平台支持
3. 功能模块丰富
4. 开源与社区
composer require kingbes/raylib
php.ini 启用 FFI 扩展
ffi.enable = true
<?php
require dirname(__DIR__) . "/vendor/autoload.php";
useKingbes\Raylib\Core; //核心
useKingbes\Raylib\Text; // 文本
useKingbes\Raylib\Utils; // 工具类
Core::initWindow(800, 450, "Hello World"); //初始化窗口
Core::setTargetFPS(60); //设置目标帧率
// 白色
$white = Utils::color(255, 255, 255);
// 绿色
$green = Utils::color(0, 255, 0);
// 主循环
while (!Core::windowShouldClose()) {
Core::beginDrawing(); //开始绘制
Core::clearBackground($white); // 清除背景
// 绘制文本
Text::drawText("Hello World", 190, 200, 20, $green);
Core::endDrawing(); // 结束绘制
}
// 关闭窗口
Core::closeWindow();
<?php
// 自绘按钮
require dirname(__DIR__) . '/vendor/autoload.php';
useKingbes\Raylib\Core; //核心
useKingbes\Raylib\Text; // 文本
useKingbes\Raylib\Utils; // 工具类
useKingbes\Raylib\Shapes; // 形状
// 宽高
$screenWidth = 800;
$screenHeight = 450;
Core::initWindow($screenWidth, $screenHeight, "自绘按钮"); //初始化窗口
Core::setTargetFPS(60); //设置目标帧率
$btnRect = Utils::rectangle(100, 100, 200, 50); //按钮矩形
$btnColor = Utils::color(255, 0, 0, 255); //按钮颜色
$btnText = "click me"; //按钮文本
$white = Utils::color(255, 255, 255, 255); //白色
$green = Utils::color(0, 255, 0, 255); //绿色
// 粉色
$pink = Utils::color(255, 105, 180, 255);
// 灰色
$gray = Utils::color(200, 200, 200, 255);
// 主循环
while (!Core::windowShouldClose()) {
// 按钮交互
$mousePos = Core::getMousePosition(); //获取鼠标位置
$isHovered = Shapes::checkCollisionPointRec($mousePos, $btnRect); //检查鼠标是否在按钮上
if ($isHovered) {
$btnColor = $gray; //按钮颜色
if (Core::isMouseButtonDown(0)) { //检查鼠标是否按下
$btnColor = Utils::color(0, 0, 255, 255); //按钮颜色
} elseif (Core::isMouseButtonReleased(0)) { //检查鼠标是否松开
echo"click\n"; //输出点击信息
}
} else {
$btnColor = Utils::color(255, 0, 0, 255); //按钮颜色
}
Core::beginDrawing(); //开始绘制
Core::clearBackground($white); // 清除背景
// 绘制按钮(带圆角)
Shapes::drawRectangleRounded($btnRect, 0.5, 10, $btnColor); //绘制按钮
// 绘制文本
Text::drawText($btnText, $btnRect->x + 10, $btnRect->y + 10, 20, $green);
Core::endDrawing(); // 结束绘制
}
// 关闭窗口
Core::closeWindow();PHP-Raylib | 原生 Raylib(C/C++) |
|---|---|
开发效率高,语法简单 | 性能略优,适合资源密集型应用 |
无需编译(FFI 方式) | 需要编译,部署稍复杂 |
适合快速原型与 PHP 生态整合 | 适合大型游戏与底层优化 |