Texture
API Textures загружает изображения из папки images текущего модуля. Полученный объект Texture можно вывести через UI или ImGui, а также получить из других API — например, через Camera.OutputTexture.
Textures доступен только в клиентской Lua-части. В server.lua Reflex-модуля этот глобальный объект равен nil.
Как обрабатывается ресурс
Заголовок раздела «Как обрабатывается ресурс»Загрузчик модуля разрешает путь внутри его images, проверяет файл и декодирует изображение в клиентскую texture resource. Texture — ссылка на этот ресурс с доступными размерами; она не содержит правил размещения на экране.
Конкретный потребитель решает, как использовать текстуру: UI хранит её в элементе, ImGui добавляет команду отрисовки текущего кадра, а Camera сама производит обновляемую render texture.
Главное
Заголовок раздела «Главное»- поддерживаются
.png,.jpgи.jpeg; - расширение обязательно указывается в пути;
- рекомендуемый путь считается относительно папки
images; widthиheightдоступны только для чтения;- отсутствующий или пропущенный файл возвращает
nil; - изображение больше
4096 × 4096или файл больше10 МБне загружается.
Где появляется результат
Заголовок раздела «Где появляется результат»Textures:GetTexture() только загружает изображение в память и ничего не выводит на экран. Покажите полученный объект одним из способов:
- через
ImGui:DrawTexture()для быстрой экранной отрисовки; - в свойстве изображения элемента UI;
- как паттерн LineRenderer.
width и height описывают размер самого ресурса. Экранный размер задаётся отдельно в Rect или стилях UI.
Размещение файлов
Заголовок раздела «Размещение файлов»Положите изображения в папку images модуля. Вложенные папки поддерживаются.
MyModule/├── images/│ ├── Icon.png│ └── UI/│ └── Background.jpg└── scripts/ └── main.luaВ Lua указывается путь внутри images:
local icon = Textures:GetTexture("Icon.png")local background = Textures:GetTexture("UI/Background.jpg")Префикс images/ тоже принимается, но путь относительно папки короче и не допускает случайного images/images/:
Textures:GetTexture("images/Icon.png") -- работаетTextures:GetTexture("Icon.png") -- рекомендуемый вариантПолный пример
Заголовок раздела «Полный пример»Структура примера содержит изображение images/Icon.png. Код загружает его один раз и рисует в левом верхнем углу в размере 128 × 128.
local Icon = Textures:GetTexture("Icon.png")
if Icon == nil then print("[Texture example] images/Icon.png was not loaded")else Scheduler:OnFrame(function() ImGui:DrawTexture(Icon, Rect.new(20, 20, 128, 128)) end)endImGui работает в immediate mode, поэтому DrawTexture вызывается каждый кадр. Сам файл повторно загружать не нужно: храните полученный Texture в переменной.
Texture
Заголовок раздела «Texture»Объект загруженного или созданного игрой изображения.
Свойства
Заголовок раздела «Свойства»| Свойство | Тип | Доступ | Описание |
|---|---|---|---|
width |
int |
get |
Ширина изображения в пикселях. |
height |
int |
get |
Высота изображения в пикселях. |
Оба свойства getter-only. Попытка присвоить им значение завершится Lua-ошибкой доступа.
local icon = Textures:GetTexture("Icon.png")
if icon ~= nil then print("Icon size: " .. icon.width .. "x" .. icon.height)endTextures
Заголовок раздела «Textures»Глобальный клиентский API для изображений текущего модуля.
GetTexture
Заголовок раздела «GetTexture»Textures:GetTexture(path: string): Texture | nilВозвращает загруженную текстуру или nil, если путь не найден либо изображение было пропущено загрузчиком.
| Аргумент | Тип | Описание |
|---|---|---|
path |
string |
Путь к файлу с расширением, относительно папки images. |
Корректно загруженные PNG, JPG и JPEG возвращают одинаковый объектный тип Texture.
Используйте точное имя файла, расширение и прямые слеши:
Textures:GetTexture("Icon.png")Textures:GetTexture("HUD/Weapons/Rifle.jpg")В текущей Windows-версии загрузчик не учитывает регистр и принимает обратные слеши, но полагаться на это не стоит. Одинаковый регистр и / делают путь понятнее и устойчивее к будущим изменениям.
| Путь | Результат |
|---|---|
Icon.png |
загрузка файла images/Icon.png |
images/Icon.png |
также работает |
Icon |
nil — отсутствует расширение |
./Icon.png |
nil |
Icon.png |
nil — пробел является частью пути |
images/images/Icon.png |
nil — папка указана дважды |
Ограничения файлов
Заголовок раздела «Ограничения файлов»Загрузчик пропускает:
- неизвестные расширения;
- повреждённые изображения;
- файлы больше
10 МБ; - изображения, у которых ширина или высота больше
4096пикселей.
В этих случаях GetTexture() возвращает nil. Ограничения были подтверждены повреждённым PNG, изображением 4097 × 4097 и декодируемым PNG размером 11 000 000 байт.
Частые ошибки
Заголовок раздела «Частые ошибки»Файл лежит рядом с main.lua
Заголовок раздела «Файл лежит рядом с main.lua»Textures сканирует папку images, а не scripts. Переместите изображение в images и указывайте путь относительно неё.
В пути нет расширения
Заголовок раздела «В пути нет расширения»Textures:GetTexture("Icon") возвращает nil. Используйте полное имя: Icon.png.
Загрузка выполняется каждый кадр
Заголовок раздела «Загрузка выполняется каждый кадр»Получите Texture один раз при запуске модуля. В Scheduler:OnFrame() передавайте в UI уже сохранённый объект.