Лексикон Сети
Ученик
(220)
1 месяц назад
Вот сокращенная версия инструкций по открытию Canvas при нажатии на 3D модель в Unity:
Способ 1: Raycasting + ScriptableObject (Более гибкий)
CanvasOpener (C#):
using UnityEngine;
public class CanvasOpener : MonoBehaviour {
public GameObject canvasToOpen;
public void OpenCanvas() { if (canvasToOpen != null) canvasToOpen.SetActive(true); else Debug.LogWarning("Canvas not assigned!"); }
public void CloseCanvas() { if (canvasToOpen != null) canvasToOpen.SetActive(false); else Debug.LogWarning("Canvas not assigned!"); }
}
csharp
ModelClickHandler (C#):
using UnityEngine;
public class ModelClickHandler : MonoBehaviour {
public CanvasOpener canvasOpener;
void Update() {
if (Input.GetMouseButtonDown(0)) {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit) && hit.collider.gameObject == gameObject) {
if (canvasOpener != null) canvasOpener.OpenCanvas(); else Debug.LogWarning("CanvasOpener not assigned!");
}
}
}
}
csharp
Настройка 3D модели:
Добавить Collider (Box Collider).
Прикрепить ModelClickHandler.
В ModelClickHandler перетащить объект с CanvasOpener.
Настройка Canvas:
Создать Canvas.
Render Mode: Screen Space - Overlay или Screen Space - Camera.
Прикрепить CanvasOpener.
В CanvasOpener перетащить Canvas.
Деактивировать Canvas в редакторе.
Способ 2: OnMouseDown() (Проще, но менее гибкий)
ModelClick (C#):
using UnityEngine;
public class ModelClick : MonoBehaviour {
public GameObject myCanvas;
void OnMouseDown() { if (myCanvas != null) myCanvas.SetActive(true); }
}
csharp
Настройка 3D модели:
Добавить Collider.
Прикрепить ModelClick.
В ModelClick перетащить Canvas.
Настройка Canvas:
Создать Canvas.
Render Mode: Screen Space - Overlay или Screen Space - Camera.
Деактивировать Canvas в редакторе.
Важно:
У 3D модели должен быть Collider.
Правильный Render Mode для Canvas.
Какой способ выбрать:
Много моделей/разные Canvas: Способ 1.
Простая сцена: Способ 2.