Создавать VR Миры - просто!
Шаблон приложения для EnJoyTheVR.
Настройка проекта
1. AssetBundle и Сцена
-
Скачанный шаблонОбязательно используйте проект с GitHub.
-
Unity 2022.3.16Версия редактора.
-
СценаНазовите сцену именем игры (строчные буквы).
-
Важно: AssetBundle Укажите имя бандла в инспекторе. Это ID игры.
-
Объект
spawnв месте появления.
Настройка игрока
Добавьте префаб EVR.API на сцену.
UseDefaultPlayer
Стандартный персонаж с физикой.
UsesInteraction
Система VR-рук и хвата.
Lua Скриптинг
CustomLuaLoader
Мост между Unity и Lua. Повесьте на любой объект.
- CustomModeDirectory: Папка игры.
- LuaScriptName: Имя файла.
Injections
Передача объектов Unity в Lua.
- 1. Добавьте элемент.
- 2. Name: Имя в Lua (напр.
MyText). - 3. Value: Ссылка на объект (напр. TextMeshPro).
Inspector View
Жизненный цикл (Lifecycle)
function Start()
print("Game Started!")
local p = EVR.Player
end
function Update()
-- Выполняется каждый кадр
end
function FixedUpdate()
-- Выполняется с фиксированным интервалом (меньше нагрузка)
end
Система
EVR:LoadScene(name, keep)
Загрузка сцены из бандла.
EVR:LoadScene("Level2", true) -- true = аддитивно
EVR:CloseApp()
Выход в лобби.
OnExit()
Callback перед выходом.
Игрок
EVR.Player / EVR.PlayerHead
Доступ к объектам игрока.
local p = EVR.Player
p.transform.position = Vector3(0, 10, 0)
EVR:SetPlayerSpeed(mv, st)
Скорость движения.
EVR:DoJump()
Прыжок.
Ввод и Управление
VR Клавиатура
EVR:EnableKeyboard(inputField, transform)
TMP_InputField нужно передать через Injections.
EVR:EnableKeyboard(MyInput, nil)
EVR:DisableKeyboard()
Контроллер
Возвращают KeyCode для использования в Unity Input.
Кнопки
- EVR:AKeyCode()
- EVR:BKeyCode()
- EVR:XKeyCode()
- EVR:YKeyCode()
Курки
- EVR:LKeyCode() // LB
- EVR:RKeyCode() // RB
- EVR:ZLKeyCode() // LT
- EVR:ZRKeyCode() // RT
Стики
- EVR:LStickButtonKeyCode()
- EVR:RStickButtonKeyCode()
if CS.UnityEngine.Input.GetKey(EVR:BKeyCode()) then
print("Button B Pressed")
end
Сохранения
EVR:Save(key, val)
EVR:Save("Lvl", 5)
EVR:Load(key, type)
local l = EVR:Load("Lvl", "int")
Мультиплеер
Настройка
Для использования функций Photon добавьте префаб EVRPhoton на каждую сцену.
Для подключения к серверу используйте скрипт PhotonSetConnection.cs и укажите App Id Realtime из панели Photon Engine.
Вспомогательные скрипты (C#)
- • EVRPhotonObjSync.cs: Вешается на объекты, методы которых нужно синхронизировать.
- • EVRPhotonServerList.cs: Для создания списка комнат.
- • EVRPhotonServerPanel.cs: Элемент UI для списка комнат.
Комнаты и Соединение
EVRPhoton:CreateRoom(name, scene)
Создать комнату и загрузить уровень.
EVRPhoton:CreateRoom("Lobby", "Game")
EVRPhoton:JoinRoom(name, scene)
Подключиться к комнате.
EVRPhoton:JoinRoom("Lobby", "Game")
EVRPhoton:LeaveRoom(scene)
Покинуть комнату.
EVRPhoton:DisconnectFromMaster()
Отключиться от сети.
Объекты (Pool & Spawn)
EVRPhoton:RegisterInPool(name, destroy)
Регистрация префабов (должны быть в Resources). Вызывать в Start().
function Start()
EVRPhoton:RegisterInPool("Cube")
EVRPhoton:RegisterInPool("Gun")
end
EVRPhoton:Instantiate(name, pos, rot)
Создание сетевого объекта.
EVRPhoton:Instantiate("Cube", Vector3(0,0,0), Quaternion.identity)
Синхронизация (RPC)
EVRPhoton:Sync(obj, script, func, param)
Вызывает функцию на объекте у всех игроков. На объекте должен быть EVRPhotonObjSync.
EVRPhoton:Sync(pistol, "GunLogic", "Shoot", "")
EVRPhoton:SetOwnership(obj)
Передать владение объектом себе.
EVRPhoton:CheckIfMaster()
Обновить EVRPhoton.IsMaster.
Игрок
EVRPhoton.NickName
Получить никнейм.
EVRPhoton:SetNickName(str)
Установить никнейм.