From e69d2bd7db8ad2e73f8f34f13d764def519892bc Mon Sep 17 00:00:00 2001 From: Alexander Date: Wed, 4 Nov 2026 15:05:12 +0100 Subject: [PATCH] =?UTF-8?q?3D:=20=D1=81=D0=B2=D0=BE=D0=B9=20=D0=BC=D0=B0?= =?UTF-8?q?=D1=82=D0=B5=D1=80=D0=B8=D0=B0=D0=BB=20=D0=BD=D0=B0=20URP=20Lit?= =?UTF-8?q?=20(Resources/Map3D/Map3DLit)=20--=20=D1=83=20=D0=BF=D1=80?= =?UTF-8?q?=D0=B8=D0=BC=D0=B8=D1=82=D0=B8=D0=B2=D0=BE=D0=B2=20=D0=B2=202D-?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B5=20=D1=81=D0=BF=D1=80?= =?UTF-8?q?=D0=B0=D0=B9=D1=82=D0=BE=D0=B2=D1=8B=D0=B9=20=D1=88=D0=B5=D0=B9?= =?UTF-8?q?=D0=B4=D0=B5=D1=80=20=D0=B1=D0=B5=D0=B7=20=D1=81=D0=B2=D0=B5?= =?UTF-8?q?=D1=82=D0=B0=20=D0=B8=20=D1=86=D0=B2=D0=B5=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- Assets/Resources/Map3D.meta | 8 ++++ Assets/Resources/Map3D/Map3DLit.mat | 58 ++++++++++++++++++++++++ Assets/Resources/Map3D/Map3DLit.mat.meta | 8 ++++ Assets/Scripts/WorldMap/Map3D.cs | 17 +++++-- 4 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 Assets/Resources/Map3D.meta create mode 100644 Assets/Resources/Map3D/Map3DLit.mat create mode 100644 Assets/Resources/Map3D/Map3DLit.mat.meta diff --git a/Assets/Resources/Map3D.meta b/Assets/Resources/Map3D.meta new file mode 100644 index 0000000..1f09f54 --- /dev/null +++ b/Assets/Resources/Map3D.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18e162eeff424f8bb3a71543eafba0c8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Map3D/Map3DLit.mat b/Assets/Resources/Map3D/Map3DLit.mat new file mode 100644 index 0000000..c00c83e --- /dev/null +++ b/Assets/Resources/Map3D/Map3DLit.mat @@ -0,0 +1,58 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-7493335797097805923 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Editor::UnityEditor.Rendering.Universal.AssetVersion + version: 10 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Map3DLit + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 1 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _Cull: 2 + - _Metallic: 0 + - _Smoothness: 0.12 + - _Surface: 0 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/Resources/Map3D/Map3DLit.mat.meta b/Assets/Resources/Map3D/Map3DLit.mat.meta new file mode 100644 index 0000000..b59d8ad --- /dev/null +++ b/Assets/Resources/Map3D/Map3DLit.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ec4d2749e73404eba2facea709d9f24 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/WorldMap/Map3D.cs b/Assets/Scripts/WorldMap/Map3D.cs index 236d2bb..a0d73f7 100644 --- a/Assets/Scripts/WorldMap/Map3D.cs +++ b/Assets/Scripts/WorldMap/Map3D.cs @@ -5,7 +5,7 @@ using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; // 3D НА ПРИМИТИВАХ: общие помощники для карты мира и 3D-поселения (переход на 2.5D, 04.11.2026). -// Материал берётся у встроенного примитива (шейдер URP по умолчанию точно есть в сборке), цвета кешируются. +// Материал -- свой, на URP Lit (Resources/Map3D/Map3DLit.mat), цвета кешируются. // Свои простые формы (конус, пирамида, двускатная крыша) -- для деревьев, шатров, крыш. // Подписи (TextMeshPro) поворачиваются к камере (FaceCamera). public static class Map3D @@ -20,9 +20,18 @@ public static class Map3D { if (baseMaterial == null) { - var probe = GameObject.CreatePrimitive(PrimitiveType.Cube); - baseMaterial = new Material(probe.GetComponent().sharedMaterial); - Object.Destroy(probe); + // Свой материал на URP Lit (Resources/Map3D/Map3DLit): материал встроенных примитивов в 2D-проекте -- + // спрайтовый, без света и без цвета. Нет ассета -- ищем шейдер по имени + var asset = Resources.Load("Map3D/Map3DLit"); + var shader = Shader.Find("Universal Render Pipeline/Lit"); + baseMaterial = asset != null ? new Material(asset) : shader != null ? new Material(shader) : null; + if (baseMaterial == null) + { + var probe = GameObject.CreatePrimitive(PrimitiveType.Cube); + baseMaterial = new Material(probe.GetComponent().sharedMaterial); + Object.Destroy(probe); + Debug.LogWarning("[3D] Нет материала Resources/Map3D/Map3DLit и шейдера URP Lit -- 3D будет без света"); + } materials.Clear(); } if (!materials.TryGetValue(color, out var m) || m == null)