ShitEngine
基于 C++20 与 SDL3 的轻量级 2D 游戏引擎
载入中...
搜索中...
未找到
UITransform类 参考

UI 专用变换组件(参考 Unity RectTransform,但不引入 Canvas Scaler) 更多...

#include <UITransform.h>

类 UITransform 继承关系图:
Component

Public 成员函数

 UITransform ()=default
 ~UITransform () override=default
 UITransform (float anchoredPositionX, float anchoredPositionY, float width, float height)
 便捷构造:居中锚点 + 给定偏移与尺寸
const Vector2getAnchorMin () const
void setAnchorMin (const Vector2 &anchorMin)
const Vector2getAnchorMax () const
void setAnchorMax (const Vector2 &anchorMax)
const Vector2getPivot () const
void setPivot (const Vector2 &pivot)
const Vector2getAnchoredPosition () const
void setAnchoredPosition (const Vector2 &position)
float getWidth () const
void setWidth (float width)
float getHeight () const
void setHeight (float height)
int getZIndex () const
void setZIndex (int zIndex)
SDL_FRect getScreenRect (const SDL_FRect *parentRect) const
 计算最终屏幕空间矩形(传入已知父级矩形;nullptr 表示用 Canvas 屏幕矩形)
SDL_FRect resolveParentRect () const
 自动查找父级矩形:沿 GameObject 父链找 UITransform,否则用 Canvas;二者都无返回全屏
Public 成员函数 继承自 Component
 Component ()
virtual ~Component ()=default
virtual void onCreate ()
virtual void onAttach ()
virtual void onDetach ()
virtual void onDestroy ()
virtual void onAfterDeserialize ()
 反序列化完成后回调(Prefab::apply 逐组件调用一次,字段已写入)。 用于重建"直写字段绕过了 setter、无法自动触发的引擎状态"(如精灵纹理加载)。
 Component (const Component &)=delete
Componentoperator= (const Component &)=delete
 Component (Component &&)=delete
Componentoperator= (Component &&)=delete
GameObjectgetOwner () const
bool isRegistered () const

额外继承的成员函数

Protected 成员函数 继承自 Component
void setRegistered (bool registered)
Protected 属性 继承自 Component
GameObjectm_owner = nullptr
bool m_isRegistered = false

详细描述

UI 专用变换组件(参考 Unity RectTransform,但不引入 Canvas Scaler)

决定 UI 元素在屏幕上的位置和大小。采用锚点(anchor)+ 轴心(pivot)定位:

  • anchorMin/anchorMax 为相对父级矩形的归一化坐标 (0-1)。
  • 若 anchorMin == anchorMax,则元素尺寸由 width/height 决定; 若 anchorMin != anchorMax,则元素沿该轴拉伸填充父级对应区间。
  • anchoredPosition 为相对锚点的像素偏移。
  • pivot 为元素自身的归一化轴心 (0-1),影响旋转 / 缩放中心。

注意坐标系:SDL Y 轴向下,(0,0) 为父级左上角,(1,1) 为右下角。 父级矩形查找顺序:沿 GameObject 父链查最近的 UITransform;若无则用 Canvas 屏幕矩形。

构造及析构函数说明

◆ UITransform() [1/2]

UITransform ( )
default

◆ ~UITransform()

~UITransform ( )
overridedefault

◆ UITransform() [2/2]

UITransform ( float anchoredPositionX,
float anchoredPositionY,
float width,
float height )

便捷构造:居中锚点 + 给定偏移与尺寸

成员函数说明

◆ getAnchoredPosition()

const Vector2 & getAnchoredPosition ( ) const
inline

◆ getAnchorMax()

const Vector2 & getAnchorMax ( ) const
inline

◆ getAnchorMin()

const Vector2 & getAnchorMin ( ) const
inline

◆ getHeight()

float getHeight ( ) const
inline

◆ getPivot()

const Vector2 & getPivot ( ) const
inline

◆ getScreenRect()

SDL_FRect getScreenRect ( const SDL_FRect * parentRect) const

计算最终屏幕空间矩形(传入已知父级矩形;nullptr 表示用 Canvas 屏幕矩形)

◆ getWidth()

float getWidth ( ) const
inline

◆ getZIndex()

int getZIndex ( ) const
inline

◆ resolveParentRect()

SDL_FRect resolveParentRect ( ) const

自动查找父级矩形:沿 GameObject 父链找 UITransform,否则用 Canvas;二者都无返回全屏

◆ setAnchoredPosition()

void setAnchoredPosition ( const Vector2 & position)
inline

◆ setAnchorMax()

void setAnchorMax ( const Vector2 & anchorMax)
inline

◆ setAnchorMin()

void setAnchorMin ( const Vector2 & anchorMin)
inline

◆ setHeight()

void setHeight ( float height)
inline

◆ setPivot()

void setPivot ( const Vector2 & pivot)
inline

◆ setWidth()

void setWidth ( float width)
inline

◆ setZIndex()

void setZIndex ( int zIndex)
inline

该类的文档由以下文件生成: