first commit

This commit is contained in:
2026-05-26 01:16:57 +03:00
commit ecee27aa85
79 changed files with 12350 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
# Unity generated folders
/Library/
/Temp/
/Logs/
/Obj/
/Build/
/Builds/
/UserSettings/
# Autogenerated IDE/project files
/*.csproj
/*.sln
/*.user
/*.userprefs
/*.pidb
/*.booproj
/*.svd
# Visual Studio / VS Code local settings
/.vs/
/.vscode/
Binary file not shown.
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f3bc8abbc245e39e792c21645e565b03
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+664
View File
@@ -0,0 +1,664 @@
using System;
using System.IO;
using System.Reflection;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public static class Lab5SceneBuilder
{
private const string SceneDirectory = "Assets/Scenes";
private const string ScenePath = SceneDirectory + "/Lab5_StealthMechanics.unity";
private const string MaterialDirectory = "Assets/Materials/Lab5";
private sealed class BuildContext
{
public Font font;
public Material floorMaterial;
public Material wallMaterial;
public Material coverMaterial;
public Material enemyMaterial;
public Material playerMaterial;
public Material zoneMaterial;
public Material visionMaterial;
public int playerLayer;
public int coverLayer;
public int obstacleLayer;
public int visionLayer;
public LayerMask obstacleMask;
public LayerMask targetMask;
}
[MenuItem("Tools/Lab5/Create Full Test Scene")]
public static void CreateFullTestScene()
{
// Builder пересобирает лабораторную с нуля, чтобы не требовать ручной настройки в инспекторе.
EnsureFolders();
EnsureTag("Player");
BuildContext context = new BuildContext
{
playerLayer = EnsureLayer("Player", 8),
coverLayer = EnsureLayer("Cover", 9),
obstacleLayer = EnsureLayer("Obstacle", 10),
visionLayer = EnsureLayer("Vision", 11)
};
context.obstacleMask = (1 << context.coverLayer) | (1 << context.obstacleLayer);
context.targetMask = 1 << context.playerLayer;
context.font = LoadBuiltinFont();
context.floorMaterial = GetOrCreateOpaqueMaterial(MaterialDirectory + "/Lab5_Floor.mat", new Color(0.21f, 0.24f, 0.28f));
context.wallMaterial = GetOrCreateOpaqueMaterial(MaterialDirectory + "/Lab5_Wall.mat", new Color(0.63f, 0.65f, 0.69f));
context.coverMaterial = GetOrCreateOpaqueMaterial(MaterialDirectory + "/Lab5_Cover.mat", new Color(0.48f, 0.31f, 0.2f));
context.enemyMaterial = GetOrCreateOpaqueMaterial(MaterialDirectory + "/Lab5_Enemy.mat", new Color(0.78f, 0.2f, 0.18f));
context.playerMaterial = GetOrCreateOpaqueMaterial(MaterialDirectory + "/Lab5_Player.mat", new Color(0.15f, 0.46f, 0.9f));
context.zoneMaterial = GetOrCreateTransparentMaterial(MaterialDirectory + "/Lab5_Zone.mat", new Color(0.15f, 0.95f, 0.95f, 0.3f));
context.visionMaterial = GetOrCreateTransparentMaterial(MaterialDirectory + "/Lab5_Vision.mat", new Color(0.2f, 0.95f, 0.35f, 0.22f));
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
Scene scene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Single);
GameObject sceneRoot = new GameObject("Lab5_Root");
GameObject environmentRoot = new GameObject("Environment");
environmentRoot.transform.SetParent(sceneRoot.transform);
GameObject systemsRoot = new GameObject("Systems");
systemsRoot.transform.SetParent(sceneRoot.transform);
GameObject patrolRoot = new GameObject("PatrolRoutes");
patrolRoot.transform.SetParent(sceneRoot.transform);
GameObject enemiesRoot = new GameObject("Enemies");
enemiesRoot.transform.SetParent(sceneRoot.transform);
CreateLighting();
CreateEnvironment(context, environmentRoot.transform);
GameObject noiseManager = new GameObject("NoiseManager");
noiseManager.transform.SetParent(systemsRoot.transform);
noiseManager.AddComponent<NoiseManager>();
GameObject player = CreatePlayer(context, sceneRoot.transform);
CreateUI(context, sceneRoot.transform, player);
CreateEnemies(context, enemiesRoot.transform, patrolRoot.transform, player);
bool navMeshBaked = TryBakeNavMesh();
EditorSceneManager.MarkSceneDirty(scene);
EditorSceneManager.SaveScene(scene, ScenePath);
AssetDatabase.SaveAssets();
AssetDatabase.Refresh();
Selection.activeObject = AssetDatabase.LoadAssetAtPath<SceneAsset>(ScenePath);
EditorUtility.DisplayDialog(
"Lab 5",
navMeshBaked
? "Сцена создана и сохранена. NavMesh был перестроен автоматически."
: "Сцена создана и сохранена. Если враги не встают на NavMesh, откройте Window -> AI -> Navigation и нажмите Bake.",
"OK");
}
private static void CreateLighting()
{
GameObject lightObject = new GameObject("Directional Light");
Light directionalLight = lightObject.AddComponent<Light>();
directionalLight.type = LightType.Directional;
directionalLight.intensity = 1.15f;
lightObject.transform.rotation = Quaternion.Euler(50f, -30f, 0f);
RenderSettings.ambientMode = UnityEngine.Rendering.AmbientMode.Flat;
RenderSettings.ambientLight = new Color(0.45f, 0.47f, 0.5f);
}
private static void CreateEnvironment(BuildContext context, Transform parent)
{
GameObject floor = GameObject.CreatePrimitive(PrimitiveType.Plane);
floor.name = "Floor";
floor.transform.SetParent(parent);
floor.transform.position = Vector3.zero;
floor.transform.localScale = new Vector3(4f, 1f, 4f);
floor.GetComponent<Renderer>().sharedMaterial = context.floorMaterial;
floor.layer = LayerMask.NameToLayer("Default");
SetNavigationStatic(floor);
CreateWall(context, parent, "NorthWall", new Vector3(0f, 1.5f, 20f), new Vector3(40f, 3f, 1f));
CreateWall(context, parent, "SouthWall", new Vector3(0f, 1.5f, -20f), new Vector3(40f, 3f, 1f));
CreateWall(context, parent, "EastWall", new Vector3(20f, 1.5f, 0f), new Vector3(1f, 3f, 40f));
CreateWall(context, parent, "WestWall", new Vector3(-20f, 1.5f, 0f), new Vector3(1f, 3f, 40f));
CreateWall(context, parent, "LeftDividerA", new Vector3(-5f, 1.5f, -12f), new Vector3(1f, 3f, 12f));
CreateWall(context, parent, "LeftDividerB", new Vector3(-5f, 1.5f, 3f), new Vector3(1f, 3f, 6f));
CreateWall(context, parent, "LeftDividerC", new Vector3(-5f, 1.5f, 14f), new Vector3(1f, 3f, 8f));
CreateWall(context, parent, "RightDividerA", new Vector3(5f, 1.5f, -14f), new Vector3(1f, 3f, 8f));
CreateWall(context, parent, "RightDividerB", new Vector3(5f, 1.5f, -3f), new Vector3(1f, 3f, 6f));
CreateWall(context, parent, "RightDividerC1", new Vector3(5f, 1.5f, 6f), new Vector3(1f, 3f, 8f));
CreateWall(context, parent, "RightDividerC2", new Vector3(5f, 1.5f, 16f), new Vector3(1f, 3f, 8f));
CreateWall(context, parent, "LeftRoomTopA", new Vector3(-15f, 1.5f, 7f), new Vector3(8f, 3f, 1f));
CreateWall(context, parent, "LeftRoomTopB", new Vector3(-7f, 1.5f, 7f), new Vector3(2f, 3f, 1f));
CreateWall(context, parent, "LeftRoomBottomA", new Vector3(-15f, 1.5f, -7f), new Vector3(8f, 3f, 1f));
CreateWall(context, parent, "LeftRoomBottomB", new Vector3(-7f, 1.5f, -7f), new Vector3(2f, 3f, 1f));
CreateWall(context, parent, "RightRoomTopA", new Vector3(8f, 1.5f, 7f), new Vector3(4f, 3f, 1f));
CreateWall(context, parent, "RightRoomTopB", new Vector3(16f, 1.5f, 7f), new Vector3(6f, 3f, 1f));
CreateWall(context, parent, "RightRoomBottomA", new Vector3(8f, 1.5f, -7f), new Vector3(4f, 3f, 1f));
CreateWall(context, parent, "RightRoomBottomB", new Vector3(16f, 1.5f, -7f), new Vector3(6f, 3f, 1f));
CreateCover(context, parent, "CenterBarrier", new Vector3(0f, 1f, 0f), new Vector3(2.5f, 2f, 2f));
CreateCover(context, parent, "CoverBox_A", new Vector3(-10f, 1f, -3f), new Vector3(2f, 2f, 2f));
CreateCover(context, parent, "CoverBox_B", new Vector3(-1.5f, 1f, -10f), new Vector3(2f, 2f, 2f));
CreateCover(context, parent, "CoverBox_C", new Vector3(2f, 1f, 5f), new Vector3(2.5f, 2f, 2f));
CreateCover(context, parent, "CoverWall_A", new Vector3(10f, 1.25f, 2f), new Vector3(3.5f, 2.5f, 1f));
CreateCover(context, parent, "CoverWall_B", new Vector3(13f, 1f, 13f), new Vector3(2f, 2f, 2f));
CreateCover(context, parent, "CoverBox_D", new Vector3(-15f, 1f, 14f), new Vector3(2f, 2f, 2f));
GameObject exitZone = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
exitZone.name = "ExitZone";
exitZone.transform.SetParent(parent);
exitZone.transform.position = new Vector3(15f, 0.2f, 15f);
exitZone.transform.localScale = new Vector3(2f, 0.2f, 2f);
exitZone.GetComponent<Renderer>().sharedMaterial = context.zoneMaterial;
exitZone.layer = context.visionLayer;
exitZone.GetComponent<Collider>().isTrigger = true;
exitZone.AddComponent<LevelExit>();
}
private static GameObject CreatePlayer(BuildContext context, Transform parent)
{
GameObject player = new GameObject("Player");
player.transform.SetParent(parent);
player.transform.position = new Vector3(-15f, 0f, 14f);
player.tag = "Player";
player.layer = context.playerLayer;
CharacterController controller = player.AddComponent<CharacterController>();
controller.height = 2f;
controller.radius = 0.35f;
controller.center = new Vector3(0f, 1f, 0f);
controller.stepOffset = 0.35f;
controller.slopeLimit = 45f;
GameObject body = GameObject.CreatePrimitive(PrimitiveType.Capsule);
body.name = "PlayerBody";
body.transform.SetParent(player.transform);
body.transform.localPosition = new Vector3(0f, 1f, 0f);
body.transform.localRotation = Quaternion.identity;
body.GetComponent<Renderer>().sharedMaterial = context.playerMaterial;
body.layer = context.playerLayer;
UnityEngine.Object.DestroyImmediate(body.GetComponent<Collider>());
GameObject cameraObject = new GameObject("PlayerCamera");
cameraObject.transform.SetParent(player.transform);
cameraObject.transform.localPosition = new Vector3(0f, 0.8f, 0f);
cameraObject.transform.localRotation = Quaternion.identity;
Camera cameraComponent = cameraObject.AddComponent<Camera>();
cameraComponent.nearClipPlane = 0.03f;
cameraObject.AddComponent<AudioListener>();
SimpleFPSController fpsController = player.AddComponent<SimpleFPSController>();
fpsController.characterController = controller;
fpsController.playerCamera = cameraComponent;
fpsController.walkSpeed = 4.1f;
fpsController.runSpeed = 7.1f;
fpsController.mouseSensitivity = 2.2f;
PlayerStealth stealth = player.AddComponent<PlayerStealth>();
stealth.characterController = controller;
stealth.fpsController = fpsController;
stealth.playerCamera = cameraComponent;
player.AddComponent<PlayerHealth>();
return player;
}
private static StealthIndicator CreateUI(BuildContext context, Transform parent, GameObject player)
{
GameObject canvasObject = new GameObject("Canvas");
canvasObject.transform.SetParent(parent);
Canvas canvas = canvasObject.AddComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
CanvasScaler scaler = canvasObject.AddComponent<CanvasScaler>();
scaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
scaler.referenceResolution = new Vector2(1920f, 1080f);
scaler.screenMatchMode = CanvasScaler.ScreenMatchMode.MatchWidthOrHeight;
scaler.matchWidthOrHeight = 0.7f;
canvasObject.AddComponent<GraphicRaycaster>();
GameObject eventSystem = new GameObject("EventSystem");
eventSystem.transform.SetParent(parent);
eventSystem.AddComponent<UnityEngine.EventSystems.EventSystem>();
eventSystem.AddComponent<UnityEngine.EventSystems.StandaloneInputModule>();
GameObject panel = CreateUIObject("StealthPanel", canvasObject.transform, new Vector2(20f, -20f), new Vector2(390f, 240f), new Vector2(0f, 1f), new Vector2(0f, 1f));
Image panelImage = panel.AddComponent<Image>();
panelImage.color = new Color(0.06f, 0.08f, 0.1f, 0.62f);
GameObject barObject = CreateUIObject("StateBar", panel.transform, new Vector2(14f, -14f), new Vector2(362f, 18f), new Vector2(0f, 1f), new Vector2(0f, 1f));
Image barImage = barObject.AddComponent<Image>();
barImage.color = new Color(0.18f, 0.85f, 0.34f, 0.95f);
Text statusText = CreateText(context, panel.transform, "StatusText", "Скрытность: безопасно", 18, FontStyle.Bold, new Vector2(14f, -40f), new Vector2(362f, 28f));
Text controlsText = CreateText(context, panel.transform, "ControlsText", string.Empty, 14, FontStyle.Normal, new Vector2(14f, -74f), new Vector2(362f, 94f));
Text debugText = CreateText(context, panel.transform, "DebugText", string.Empty, 14, FontStyle.Normal, new Vector2(14f, -172f), new Vector2(362f, 56f));
GameObject healthPanel = CreateUIObject("HealthPanel", canvasObject.transform, new Vector2(-20f, -20f), new Vector2(190f, 42f), new Vector2(1f, 1f), new Vector2(1f, 1f));
Image healthPanelImage = healthPanel.AddComponent<Image>();
healthPanelImage.color = new Color(0.06f, 0.08f, 0.1f, 0.62f);
Text healthText = CreateText(context, healthPanel.transform, "HealthText", "Здоровье: 100", 18, FontStyle.Bold, new Vector2(10f, -6f), new Vector2(170f, 28f));
Text gameOverText = CreateCenteredText(context, canvasObject.transform, "GameOverText", "Игрок устранен", 28, FontStyle.Bold, new Vector2(520f, 70f));
gameOverText.color = new Color(1f, 0.2f, 0.2f, 1f);
gameOverText.gameObject.SetActive(false);
StealthIndicator indicator = panel.AddComponent<StealthIndicator>();
indicator.stateBar = barImage;
indicator.statusText = statusText;
indicator.controlsText = controlsText;
indicator.debugText = debugText;
indicator.healthText = healthText;
indicator.gameOverText = gameOverText;
indicator.playerStealth = player.GetComponent<PlayerStealth>();
indicator.playerHealth = player.GetComponent<PlayerHealth>();
return indicator;
}
private static void CreateEnemies(BuildContext context, Transform enemiesParent, Transform patrolParent, GameObject player)
{
CreateEnemy(
context,
enemiesParent,
patrolParent,
"Enemy_LeftWing",
new Vector3(-12f, 0f, -10f),
new[]
{
new Vector3(-15f, 0f, -15f),
new Vector3(-10f, 0f, -15f),
new Vector3(-10f, 0f, -9f),
new Vector3(-15f, 0f, -9f)
},
player);
CreateEnemy(
context,
enemiesParent,
patrolParent,
"Enemy_CenterCorridor",
new Vector3(0f, 0f, -4f),
new[]
{
new Vector3(-1f, 0f, -14f),
new Vector3(-1f, 0f, -2f),
new Vector3(1f, 0f, 6f),
new Vector3(1f, 0f, 14f)
},
player);
CreateEnemy(
context,
enemiesParent,
patrolParent,
"Enemy_RightWing",
new Vector3(12f, 0f, 12f),
new[]
{
new Vector3(10f, 0f, 10f),
new Vector3(15f, 0f, 10f),
new Vector3(15f, 0f, 16f),
new Vector3(10f, 0f, 16f)
},
player);
}
private static EnemyStateMachine CreateEnemy(
BuildContext context,
Transform enemiesParent,
Transform patrolParent,
string enemyName,
Vector3 position,
Vector3[] waypointPositions,
GameObject player)
{
GameObject enemyRoot = new GameObject(enemyName);
enemyRoot.transform.SetParent(enemiesParent);
enemyRoot.transform.position = position;
enemyRoot.layer = LayerMask.NameToLayer("Default");
CapsuleCollider capsuleCollider = enemyRoot.AddComponent<CapsuleCollider>();
capsuleCollider.center = new Vector3(0f, 1f, 0f);
capsuleCollider.height = 2f;
capsuleCollider.radius = 0.4f;
GameObject body = GameObject.CreatePrimitive(PrimitiveType.Capsule);
body.name = "Body";
body.transform.SetParent(enemyRoot.transform);
body.transform.localPosition = new Vector3(0f, 1f, 0f);
body.transform.localRotation = Quaternion.identity;
body.GetComponent<Renderer>().sharedMaterial = context.enemyMaterial;
UnityEngine.Object.DestroyImmediate(body.GetComponent<Collider>());
NavMeshAgent agent = enemyRoot.AddComponent<NavMeshAgent>();
agent.radius = 0.35f;
agent.height = 2f;
agent.baseOffset = 0f;
agent.speed = 2.2f;
agent.angularSpeed = 360f;
agent.acceleration = 12f;
agent.stoppingDistance = 0.1f;
agent.autoBraking = true;
EnemyStateMachine stateMachine = enemyRoot.AddComponent<EnemyStateMachine>();
stateMachine.agent = agent;
stateMachine.patrolSpeed = 2.2f;
stateMachine.suspicionSpeed = 2.9f;
stateMachine.alertSpeed = 4.1f;
stateMachine.hearingRange = 14f;
stateMachine.suspicionWaitDuration = 2.5f;
stateMachine.captureDistance = 1.7f;
EnemyVision vision = enemyRoot.AddComponent<EnemyVision>();
vision.stateMachine = stateMachine;
vision.player = player.transform;
vision.viewRadius = 13.5f;
vision.viewAngle = 70f;
vision.eyeHeight = 1.4f;
vision.obstacleMask = context.obstacleMask;
vision.targetMask = context.targetMask;
EnemyVisionVisualizer visualizer = enemyRoot.AddComponent<EnemyVisionVisualizer>();
visualizer.vision = vision;
visualizer.stateMachine = stateMachine;
visualizer.visionMaterialTemplate = context.visionMaterial;
stateMachine.vision = vision;
stateMachine.patrolPoints = CreateWaypoints(enemyName + "_Route", patrolParent, waypointPositions);
return stateMachine;
}
private static Transform[] CreateWaypoints(string routeName, Transform patrolParent, Vector3[] positions)
{
GameObject routeRoot = new GameObject(routeName);
routeRoot.transform.SetParent(patrolParent);
Transform[] waypoints = new Transform[positions.Length];
for (int i = 0; i < positions.Length; i++)
{
GameObject waypoint = new GameObject("Waypoint_" + i);
waypoint.transform.SetParent(routeRoot.transform);
waypoint.transform.position = positions[i];
waypoints[i] = waypoint.transform;
}
return waypoints;
}
private static GameObject CreateWall(BuildContext context, Transform parent, string name, Vector3 position, Vector3 scale)
{
GameObject wall = GameObject.CreatePrimitive(PrimitiveType.Cube);
wall.name = name;
wall.transform.SetParent(parent);
wall.transform.position = position;
wall.transform.localScale = scale;
wall.GetComponent<Renderer>().sharedMaterial = context.wallMaterial;
wall.layer = context.obstacleLayer;
SetNavigationStatic(wall);
return wall;
}
private static GameObject CreateCover(BuildContext context, Transform parent, string name, Vector3 position, Vector3 scale)
{
GameObject cover = GameObject.CreatePrimitive(PrimitiveType.Cube);
cover.name = name;
cover.transform.SetParent(parent);
cover.transform.position = position;
cover.transform.localScale = scale;
cover.GetComponent<Renderer>().sharedMaterial = context.coverMaterial;
cover.layer = context.coverLayer;
cover.AddComponent<CoverChecker>();
SetNavigationStatic(cover);
return cover;
}
private static GameObject CreateUIObject(string name, Transform parent, Vector2 anchoredPosition, Vector2 sizeDelta, Vector2 anchorMin, Vector2 anchorMax)
{
GameObject gameObject = new GameObject(name, typeof(RectTransform));
gameObject.transform.SetParent(parent, false);
RectTransform rectTransform = gameObject.GetComponent<RectTransform>();
rectTransform.anchorMin = anchorMin;
rectTransform.anchorMax = anchorMax;
rectTransform.pivot = new Vector2(anchorMin.x, anchorMax.y);
rectTransform.anchoredPosition = anchoredPosition;
rectTransform.sizeDelta = sizeDelta;
return gameObject;
}
private static Text CreateText(
BuildContext context,
Transform parent,
string name,
string text,
int fontSize,
FontStyle fontStyle,
Vector2 anchoredPosition,
Vector2 sizeDelta)
{
GameObject textObject = CreateUIObject(name, parent, anchoredPosition, sizeDelta, new Vector2(0f, 1f), new Vector2(0f, 1f));
Text uiText = textObject.AddComponent<Text>();
uiText.font = context.font;
uiText.text = text;
uiText.fontSize = fontSize;
uiText.fontStyle = fontStyle;
uiText.alignment = TextAnchor.UpperLeft;
uiText.horizontalOverflow = HorizontalWrapMode.Wrap;
uiText.verticalOverflow = VerticalWrapMode.Overflow;
uiText.color = Color.white;
return uiText;
}
private static Text CreateCenteredText(
BuildContext context,
Transform parent,
string name,
string text,
int fontSize,
FontStyle fontStyle,
Vector2 sizeDelta)
{
GameObject textObject = new GameObject(name, typeof(RectTransform));
textObject.transform.SetParent(parent, false);
RectTransform rectTransform = textObject.GetComponent<RectTransform>();
rectTransform.anchorMin = new Vector2(0.5f, 0.5f);
rectTransform.anchorMax = new Vector2(0.5f, 0.5f);
rectTransform.pivot = new Vector2(0.5f, 0.5f);
rectTransform.anchoredPosition = Vector2.zero;
rectTransform.sizeDelta = sizeDelta;
Text uiText = textObject.AddComponent<Text>();
uiText.font = context.font;
uiText.text = text;
uiText.fontSize = fontSize;
uiText.fontStyle = fontStyle;
uiText.alignment = TextAnchor.MiddleCenter;
uiText.horizontalOverflow = HorizontalWrapMode.Wrap;
uiText.verticalOverflow = VerticalWrapMode.Overflow;
uiText.color = Color.white;
return uiText;
}
private static Material GetOrCreateOpaqueMaterial(string path, Color color)
{
Material material = AssetDatabase.LoadAssetAtPath<Material>(path);
if (material == null)
{
material = new Material(Shader.Find("Standard"));
AssetDatabase.CreateAsset(material, path);
}
material.shader = Shader.Find("Standard");
material.color = color;
EditorUtility.SetDirty(material);
return material;
}
private static Font LoadBuiltinFont()
{
Font font = Resources.GetBuiltinResource<Font>("LegacyRuntime.ttf");
if (font != null)
{
return font;
}
font = Resources.GetBuiltinResource<Font>("Arial.ttf");
if (font != null)
{
return font;
}
throw new InvalidOperationException("Не удалось загрузить встроенный шрифт Unity.");
}
private static Material GetOrCreateTransparentMaterial(string path, Color color)
{
Material material = AssetDatabase.LoadAssetAtPath<Material>(path);
if (material == null)
{
material = new Material(Shader.Find("Standard"));
AssetDatabase.CreateAsset(material, path);
}
material.shader = Shader.Find("Standard");
material.SetFloat("_Mode", 3f);
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
material.SetInt("_ZWrite", 0);
material.DisableKeyword("_ALPHATEST_ON");
material.EnableKeyword("_ALPHABLEND_ON");
material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Transparent;
material.color = color;
EditorUtility.SetDirty(material);
return material;
}
private static void EnsureFolders()
{
Directory.CreateDirectory(SceneDirectory);
Directory.CreateDirectory("Assets/Scripts");
Directory.CreateDirectory("Assets/Editor");
Directory.CreateDirectory("Assets/Materials");
Directory.CreateDirectory(MaterialDirectory);
}
private static void EnsureTag(string tagName)
{
SerializedObject tagManager = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/TagManager.asset")[0]);
SerializedProperty tagsProperty = tagManager.FindProperty("tags");
for (int i = 0; i < tagsProperty.arraySize; i++)
{
SerializedProperty existingTag = tagsProperty.GetArrayElementAtIndex(i);
if (existingTag.stringValue == tagName)
{
return;
}
}
tagsProperty.InsertArrayElementAtIndex(tagsProperty.arraySize);
tagsProperty.GetArrayElementAtIndex(tagsProperty.arraySize - 1).stringValue = tagName;
tagManager.ApplyModifiedProperties();
}
private static int EnsureLayer(string layerName, int preferredIndex)
{
int existingLayer = LayerMask.NameToLayer(layerName);
if (existingLayer >= 0)
{
return existingLayer;
}
SerializedObject tagManager = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/TagManager.asset")[0]);
SerializedProperty layersProperty = tagManager.FindProperty("layers");
if (preferredIndex >= 8 && preferredIndex < layersProperty.arraySize)
{
SerializedProperty preferredLayer = layersProperty.GetArrayElementAtIndex(preferredIndex);
if (string.IsNullOrEmpty(preferredLayer.stringValue) || preferredLayer.stringValue == layerName)
{
preferredLayer.stringValue = layerName;
tagManager.ApplyModifiedProperties();
return preferredIndex;
}
}
for (int i = 8; i < layersProperty.arraySize; i++)
{
SerializedProperty layerProperty = layersProperty.GetArrayElementAtIndex(i);
if (string.IsNullOrEmpty(layerProperty.stringValue))
{
layerProperty.stringValue = layerName;
tagManager.ApplyModifiedProperties();
return i;
}
}
Debug.LogWarning("Не удалось добавить слой " + layerName + ". Будет использован Default.");
return 0;
}
private static void SetNavigationStatic(GameObject gameObject)
{
GameObjectUtility.SetStaticEditorFlags(
gameObject,
StaticEditorFlags.BatchingStatic |
StaticEditorFlags.ContributeGI |
StaticEditorFlags.NavigationStatic |
StaticEditorFlags.OccludeeStatic |
StaticEditorFlags.OccluderStatic);
}
private static bool TryBakeNavMesh()
{
try
{
Type navMeshBuilderType = FindType("UnityEditor.AI.NavMeshBuilder");
if (navMeshBuilderType == null)
{
Debug.LogWarning("UnityEditor.AI.NavMeshBuilder не найден. Враги смогут использовать fallback-движение без NavMesh.");
return false;
}
MethodInfo clearMethod = navMeshBuilderType.GetMethod("ClearAllNavMeshes", BindingFlags.Public | BindingFlags.Static);
MethodInfo buildMethod = navMeshBuilderType.GetMethod("BuildNavMesh", BindingFlags.Public | BindingFlags.Static);
if (buildMethod == null)
{
Debug.LogWarning("Метод BuildNavMesh не найден. Используйте Window -> AI -> Navigation -> Bake.");
return false;
}
clearMethod?.Invoke(null, null);
buildMethod.Invoke(null, null);
return true;
}
catch (Exception exception)
{
Debug.LogWarning("Автоматическая запечка NavMesh не удалась: " + exception.Message);
return false;
}
}
private static Type FindType(string fullName)
{
Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
for (int i = 0; i < assemblies.Length; i++)
{
Type type = assemblies[i].GetType(fullName);
if (type != null)
{
return type;
}
}
return null;
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ff1a9bdc0531d36dab57be60f02aaed9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 42218de20335e4957af01d9f40aec68b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f168bc65528873d739e18ec0009eb03d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+83
View File
@@ -0,0 +1,83 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Lab5_Cover
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
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}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.48, g: 0.31, b: 0.2, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5b5fdb5e6d80f16858a1aa028f4feb38
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+83
View File
@@ -0,0 +1,83 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Lab5_Enemy
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
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}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.78, g: 0.2, b: 0.18, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 74828097caed400189494e271903a597
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+83
View File
@@ -0,0 +1,83 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Lab5_Floor
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
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}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.21, g: 0.24, b: 0.28, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e0540e5a109e41e85adba7ef31b13602
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+83
View File
@@ -0,0 +1,83 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Lab5_Player
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
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}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.15, g: 0.46, b: 0.9, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6a281e4550a8624c4bb12c0c3a70774c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+85
View File
@@ -0,0 +1,85 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Lab5_Vision
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHABLEND_ON
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
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}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 10
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 3
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 5
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 0.2, g: 0.95, b: 0.35, a: 0.22}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bf4ad84858ddbbcaba30f5fbb75591a8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+83
View File
@@ -0,0 +1,83 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Lab5_Wall
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
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}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _UVSec: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.63, g: 0.65, b: 0.69, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0ed1db8b66d46074983f534e86e0f6dd
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+85
View File
@@ -0,0 +1,85 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Lab5_Zone
m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ALPHABLEND_ON
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Transparent
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
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}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BumpScale: 1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 10
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 3
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 5
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _Color: {r: 0.15, g: 0.95, b: 0.95, a: 0.3}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
m_BuildTextureStacks: []
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f921b85304e44cc67bc8319d4ef52e93
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f9e46986aaf4df183950a49c2ef697f0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9930d1a4f44e01237998f5d0a604b9a0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9be5facad7366ed16be183a4d61a5ddb
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 905297707969a254489ea8b8d1937a9c
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 23800000
userData:
assetBundleName:
assetBundleVariant:
+267
View File
@@ -0,0 +1,267 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 705507994}
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 500
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 500
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 2
m_PVRDenoiserTypeDirect: 0
m_PVRDenoiserTypeIndirect: 0
m_PVRDenoiserTypeAO: 0
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 0
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &705507993
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 705507995}
- component: {fileID: 705507994}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!108 &705507994
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 705507993}
m_Enabled: 1
serializedVersion: 8
m_Type: 1
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_Lightmapping: 1
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &705507995
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 705507993}
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1 &963194225
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 963194228}
- component: {fileID: 963194227}
- component: {fileID: 963194226}
m_Layer: 0
m_Name: Main Camera
m_TagString: MainCamera
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &963194226
AudioListener:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 963194225}
m_Enabled: 1
--- !u!20 &963194227
Camera:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 963194225}
m_Enabled: 1
serializedVersion: 2
m_ClearFlags: 1
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
m_projectionMatrixMode: 1
m_SensorSize: {x: 36, y: 24}
m_LensShift: {x: 0, y: 0}
m_GateFitMode: 2
m_FocalLength: 50
m_NormalizedViewPortRect:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
near clip plane: 0.3
far clip plane: 1000
field of view: 60
orthographic: 0
orthographic size: 5
m_Depth: -1
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingPath: -1
m_TargetTexture: {fileID: 0}
m_TargetDisplay: 0
m_TargetEye: 3
m_HDR: 1
m_AllowMSAA: 1
m_AllowDynamicResolution: 0
m_ForceIntoRT: 0
m_OcclusionCulling: 1
m_StereoConvergence: 10
m_StereoSeparation: 0.022
--- !u!4 &963194228
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 963194225}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: -10}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+7
View File
@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9fc0d4010bbf28b4594072e72b8655ab
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 41e5c5d9c7975c3ab9888def5d7bae63
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+36
View File
@@ -0,0 +1,36 @@
using UnityEngine;
[DisallowMultipleComponent]
public class CoverChecker : MonoBehaviour
{
[Tooltip("Если объект находится между врагом и игроком, он должен блокировать линию видимости.")]
public bool blocksVision = true;
[Tooltip("Небольшая метка для будущих расширений механики укрытий.")]
public float concealmentStrength = 1f;
public static bool IsVisionBlocked(Vector3 origin, Vector3 target, LayerMask obstacleMask)
{
Vector3 direction = target - origin;
float distance = direction.magnitude;
if (distance <= Mathf.Epsilon)
{
return false;
}
return Physics.Raycast(origin, direction.normalized, distance, obstacleMask, QueryTriggerInteraction.Ignore);
}
private void OnDrawGizmosSelected()
{
Gizmos.color = blocksVision ? new Color(0.2f, 0.7f, 1f, 0.5f) : new Color(1f, 0.4f, 0.2f, 0.3f);
Collider objectCollider = GetComponent<Collider>();
if (objectCollider != null)
{
Gizmos.matrix = transform.localToWorldMatrix;
Gizmos.DrawWireCube(objectCollider.bounds.center - transform.position, objectCollider.bounds.size);
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 2e3e939402d7fb1cc9bab1bf53ffc289
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+296
View File
@@ -0,0 +1,296 @@
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
[RequireComponent(typeof(CapsuleCollider))]
public class EnemyStateMachine : MonoBehaviour
{
public enum State
{
Patrol,
Suspicion,
Alert
}
[Header("References")]
public Transform[] patrolPoints;
public NavMeshAgent agent;
public EnemyVision vision;
[Header("Movement")]
public float patrolSpeed = 2.2f;
public float suspicionSpeed = 2.8f;
public float alertSpeed = 3.8f;
public float manualRotationSpeed = 8f;
public float waypointTolerance = 0.7f;
[Header("Awareness")]
public float hearingRange = 12f;
public float suspicionWaitDuration = 2.5f;
public float loseSightDelay = 1.3f;
public float captureDistance = 1.6f;
public int captureDamage = 10;
public float captureCooldown = 1f;
public State CurrentState { get; private set; } = State.Patrol;
public static IReadOnlyList<EnemyStateMachine> ActiveEnemies => activeEnemies;
private static readonly List<EnemyStateMachine> activeEnemies = new List<EnemyStateMachine>();
private Transform player;
private PlayerHealth playerHealth;
private int patrolIndex;
private Vector3 investigationTarget;
private Vector3 lastKnownPlayerPosition;
private float suspicionTimer;
private float lastSeenTime = -999f;
private float lastCaptureTime = -999f;
private float lastHandledNoiseTimestamp = -999f;
private void OnEnable()
{
if (!activeEnemies.Contains(this))
{
activeEnemies.Add(this);
}
}
private void OnDisable()
{
activeEnemies.Remove(this);
}
private void Awake()
{
agent = agent != null ? agent : GetComponent<NavMeshAgent>();
vision = vision != null ? vision : GetComponent<EnemyVision>();
}
private void Start()
{
AcquirePlayer();
ApplySpeedForState(CurrentState);
}
private void Update()
{
AcquirePlayer();
ListenForNoise();
switch (CurrentState)
{
case State.Patrol:
UpdatePatrol();
break;
case State.Suspicion:
UpdateSuspicion();
break;
case State.Alert:
UpdateAlert();
break;
}
if (CurrentState == State.Alert && Time.time - lastSeenTime > loseSightDelay)
{
investigationTarget = lastKnownPlayerPosition;
EnterState(State.Suspicion);
}
}
public void OnPlayerDetected(Vector3 playerPos)
{
lastKnownPlayerPosition = playerPos;
lastSeenTime = Time.time;
if (CurrentState != State.Alert)
{
EnterState(State.Alert);
}
}
public void OnPlayerLost()
{
if (CurrentState == State.Alert)
{
investigationTarget = lastKnownPlayerPosition;
}
}
public void OnNoiseHeard(Vector3 noisePosition)
{
if (CurrentState == State.Alert)
{
return;
}
investigationTarget = noisePosition;
suspicionTimer = 0f;
EnterState(State.Suspicion);
}
private void UpdatePatrol()
{
if (patrolPoints == null || patrolPoints.Length == 0)
{
return;
}
Transform targetPoint = patrolPoints[patrolIndex];
MoveTowards(targetPoint.position, patrolSpeed);
if (HasReached(targetPoint.position))
{
patrolIndex = (patrolIndex + 1) % patrolPoints.Length;
}
}
private void UpdateSuspicion()
{
MoveTowards(investigationTarget, suspicionSpeed);
if (HasReached(investigationTarget))
{
suspicionTimer += Time.deltaTime;
if (suspicionTimer >= suspicionWaitDuration)
{
suspicionTimer = 0f;
EnterState(State.Patrol);
}
}
else
{
suspicionTimer = 0f;
}
}
private void UpdateAlert()
{
if (player == null)
{
return;
}
lastKnownPlayerPosition = player.position;
MoveTowards(lastKnownPlayerPosition, alertSpeed);
if (Vector3.Distance(transform.position, player.position) <= captureDistance && Time.time >= lastCaptureTime + captureCooldown)
{
lastCaptureTime = Time.time;
if (playerHealth != null)
{
playerHealth.TakeDamage(captureDamage);
}
Debug.Log("Игрок обнаружен!");
}
}
private void ListenForNoise()
{
NoiseManager.NoiseEvent noise = NoiseManager.GetClosestNoise(transform.position, hearingRange);
if (noise == null || noise.timestamp <= lastHandledNoiseTimestamp)
{
return;
}
lastHandledNoiseTimestamp = noise.timestamp;
OnNoiseHeard(noise.position);
}
private void EnterState(State newState)
{
CurrentState = newState;
ApplySpeedForState(newState);
switch (newState)
{
case State.Patrol:
suspicionTimer = 0f;
break;
case State.Suspicion:
suspicionTimer = 0f;
break;
case State.Alert:
lastSeenTime = Time.time;
break;
}
}
private void ApplySpeedForState(State state)
{
if (agent == null)
{
return;
}
switch (state)
{
case State.Patrol:
agent.speed = patrolSpeed;
break;
case State.Suspicion:
agent.speed = suspicionSpeed;
break;
case State.Alert:
agent.speed = alertSpeed;
break;
}
}
private void MoveTowards(Vector3 destination, float manualSpeed)
{
if (agent != null && agent.isActiveAndEnabled && agent.isOnNavMesh)
{
agent.SetDestination(destination);
return;
}
// Fallback нужен на случай, если NavMesh ещё не запечён или агент не смог встать на него.
Vector3 flatDestination = new Vector3(destination.x, transform.position.y, destination.z);
Vector3 direction = flatDestination - transform.position;
direction.y = 0f;
if (direction.sqrMagnitude <= 0.001f)
{
return;
}
Vector3 step = direction.normalized * manualSpeed * Time.deltaTime;
transform.position += step.sqrMagnitude > direction.sqrMagnitude ? direction : step;
Quaternion targetRotation = Quaternion.LookRotation(direction.normalized, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * manualRotationSpeed);
}
private bool HasReached(Vector3 destination)
{
if (agent != null && agent.isActiveAndEnabled && agent.isOnNavMesh)
{
if (agent.pathPending)
{
return false;
}
return agent.remainingDistance <= Mathf.Max(agent.stoppingDistance, waypointTolerance);
}
Vector3 flatDestination = new Vector3(destination.x, transform.position.y, destination.z);
return Vector3.Distance(transform.position, flatDestination) <= waypointTolerance;
}
private void AcquirePlayer()
{
if (player != null)
{
return;
}
GameObject playerObject = GameObject.FindGameObjectWithTag("Player");
if (playerObject == null)
{
return;
}
player = playerObject.transform;
playerHealth = playerObject.GetComponent<PlayerHealth>();
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1293c8e1da110e426a9118204db9badf
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+119
View File
@@ -0,0 +1,119 @@
using UnityEngine;
public class EnemyVision : MonoBehaviour
{
[Header("References")]
public EnemyStateMachine stateMachine;
public Transform player;
[Header("Vision")]
public float viewRadius = 14f;
[Range(1f, 180f)]
public float viewAngle = 65f;
public LayerMask obstacleMask;
public LayerMask targetMask;
public float eyeHeight = 1.4f;
public float standingDetectionDelay = 0.12f;
public float crouchDetectionDelay = 0.35f;
private bool hadLineOfSight;
private float visibleTimer;
private void Awake()
{
stateMachine = stateMachine != null ? stateMachine : GetComponent<EnemyStateMachine>();
}
private void Update()
{
AcquirePlayer();
if (player == null || stateMachine == null)
{
return;
}
bool canSeePlayer = CanSeePlayer(out Vector3 eyePosition, out Vector3 targetPosition, out Color debugColor);
Debug.DrawRay(eyePosition, targetPosition - eyePosition, debugColor);
if (canSeePlayer)
{
PlayerStealth stealth = player.GetComponent<PlayerStealth>();
float requiredTime = stealth != null && stealth.IsCrouching ? crouchDetectionDelay : standingDetectionDelay;
visibleTimer += Time.deltaTime;
if (visibleTimer >= requiredTime)
{
hadLineOfSight = true;
stateMachine.OnPlayerDetected(player.position);
}
}
else
{
visibleTimer = 0f;
if (hadLineOfSight)
{
hadLineOfSight = false;
stateMachine.OnPlayerLost();
}
}
}
public float GetViewRadiusForCurrentTarget()
{
if (player == null)
{
return viewRadius;
}
PlayerStealth stealth = player.GetComponent<PlayerStealth>();
return viewRadius * (stealth != null ? stealth.VisibilityMultiplier : 1f);
}
private bool CanSeePlayer(out Vector3 eyePosition, out Vector3 targetPosition, out Color debugColor)
{
eyePosition = transform.position + Vector3.up * eyeHeight;
targetPosition = player.position + Vector3.up * 0.9f;
debugColor = Color.gray;
float effectiveRadius = GetViewRadiusForCurrentTarget();
Vector3 directionToPlayer = targetPosition - eyePosition;
float distanceToPlayer = directionToPlayer.magnitude;
if (distanceToPlayer > effectiveRadius)
{
return false;
}
float angleToPlayer = Vector3.Angle(transform.forward, directionToPlayer);
if (angleToPlayer > viewAngle * 0.5f)
{
return false;
}
int combinedMask = obstacleMask | targetMask;
if (Physics.Raycast(eyePosition, directionToPlayer.normalized, out RaycastHit hit, distanceToPlayer, combinedMask, QueryTriggerInteraction.Ignore))
{
// Если первым попался не игрок, значит между врагом и игроком есть укрытие или стена.
bool isPlayerHit = hit.transform == player || hit.transform.IsChildOf(player);
debugColor = isPlayerHit ? Color.green : Color.red;
return isPlayerHit;
}
debugColor = Color.red;
return false;
}
private void AcquirePlayer()
{
if (player != null)
{
return;
}
GameObject playerObject = GameObject.FindGameObjectWithTag("Player");
if (playerObject != null)
{
player = playerObject.transform;
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 170f19287f4f8d6a3a78c9caf9cd84d0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+214
View File
@@ -0,0 +1,214 @@
using UnityEngine;
using UnityEngine.Rendering;
public class EnemyVisionVisualizer : MonoBehaviour
{
public EnemyVision vision;
public EnemyStateMachine stateMachine;
public Material visionMaterialTemplate;
public int segmentCount = 28;
public float groundOffset = 0.05f;
private Transform meshRoot;
private MeshFilter meshFilter;
private MeshRenderer meshRenderer;
private Mesh visionMesh;
private Material runtimeMaterial;
private void Awake()
{
vision = vision != null ? vision : GetComponent<EnemyVision>();
stateMachine = stateMachine != null ? stateMachine : GetComponent<EnemyStateMachine>();
EnsureMeshObjects();
RebuildMesh();
UpdateVisualState();
}
private void LateUpdate()
{
EnsureMeshObjects();
UpdateVisualState();
}
private void OnValidate()
{
segmentCount = Mathf.Max(6, segmentCount);
if (!Application.isPlaying)
{
EnsureMeshObjects();
RebuildMesh();
UpdateVisualState();
}
}
private void EnsureMeshObjects()
{
int visualizationLayer = LayerMask.NameToLayer("Vision");
if (visualizationLayer < 0)
{
visualizationLayer = LayerMask.NameToLayer("Ignore Raycast");
}
if (meshRoot == null)
{
Transform existing = transform.Find("VisionCone");
if (existing != null)
{
meshRoot = existing;
}
else
{
GameObject root = new GameObject("VisionCone");
root.transform.SetParent(transform, false);
root.transform.localPosition = new Vector3(0f, groundOffset, 0f);
root.transform.localRotation = Quaternion.identity;
root.layer = visualizationLayer;
meshRoot = root.transform;
}
}
meshRoot.localPosition = new Vector3(0f, groundOffset, 0f);
meshRoot.gameObject.layer = visualizationLayer;
if (meshFilter == null)
{
meshFilter = meshRoot.GetComponent<MeshFilter>();
if (meshFilter == null)
{
meshFilter = meshRoot.gameObject.AddComponent<MeshFilter>();
}
}
if (meshRenderer == null)
{
meshRenderer = meshRoot.GetComponent<MeshRenderer>();
if (meshRenderer == null)
{
meshRenderer = meshRoot.gameObject.AddComponent<MeshRenderer>();
meshRenderer.shadowCastingMode = ShadowCastingMode.Off;
meshRenderer.receiveShadows = false;
}
}
if (visionMesh == null)
{
visionMesh = new Mesh { name = "EnemyVisionCone" };
meshFilter.sharedMesh = visionMesh;
}
if (runtimeMaterial == null)
{
runtimeMaterial = visionMaterialTemplate != null ? new Material(visionMaterialTemplate) : BuildTransparentMaterial();
runtimeMaterial.name = "EnemyVisionRuntimeMaterial";
meshRenderer.sharedMaterial = runtimeMaterial;
}
}
private void RebuildMesh()
{
if (vision == null || visionMesh == null)
{
return;
}
float radius = vision.viewRadius;
float halfAngle = vision.viewAngle * 0.5f;
Vector3[] vertices = new Vector3[segmentCount + 2];
int[] triangles = new int[segmentCount * 3];
Vector2[] uv = new Vector2[vertices.Length];
vertices[0] = Vector3.zero;
uv[0] = new Vector2(0.5f, 0f);
for (int i = 0; i <= segmentCount; i++)
{
float progress = i / (float)segmentCount;
float angle = -halfAngle + progress * vision.viewAngle;
float radians = Mathf.Deg2Rad * angle;
Vector3 direction = new Vector3(Mathf.Sin(radians), 0f, Mathf.Cos(radians));
vertices[i + 1] = direction * radius;
uv[i + 1] = new Vector2(progress, 1f);
if (i == segmentCount)
{
continue;
}
int triangleIndex = i * 3;
triangles[triangleIndex] = 0;
triangles[triangleIndex + 1] = i + 2;
triangles[triangleIndex + 2] = i + 1;
}
visionMesh.Clear();
visionMesh.vertices = vertices;
visionMesh.triangles = triangles;
visionMesh.uv = uv;
visionMesh.RecalculateNormals();
visionMesh.RecalculateBounds();
}
private void UpdateVisualState()
{
if (runtimeMaterial == null || stateMachine == null)
{
return;
}
Color stateColor = new Color(0.2f, 0.95f, 0.35f, 0.22f);
switch (stateMachine.CurrentState)
{
case EnemyStateMachine.State.Suspicion:
stateColor = new Color(1f, 0.85f, 0.2f, 0.24f);
break;
case EnemyStateMachine.State.Alert:
stateColor = new Color(1f, 0.25f, 0.2f, 0.28f);
break;
}
runtimeMaterial.color = stateColor;
if (runtimeMaterial.HasProperty("_Color"))
{
runtimeMaterial.SetColor("_Color", stateColor);
}
}
private Material BuildTransparentMaterial()
{
Shader shader = Shader.Find("Standard");
Material material = new Material(shader);
material.SetFloat("_Mode", 3f);
material.SetInt("_SrcBlend", (int)BlendMode.SrcAlpha);
material.SetInt("_DstBlend", (int)BlendMode.OneMinusSrcAlpha);
material.SetInt("_ZWrite", 0);
material.DisableKeyword("_ALPHATEST_ON");
material.EnableKeyword("_ALPHABLEND_ON");
material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
material.renderQueue = (int)RenderQueue.Transparent;
material.color = new Color(0.2f, 0.95f, 0.35f, 0.22f);
return material;
}
private void OnDrawGizmosSelected()
{
if (vision == null)
{
vision = GetComponent<EnemyVision>();
}
if (vision == null)
{
return;
}
Gizmos.color = Color.cyan;
Vector3 origin = transform.position + Vector3.up * 0.1f;
Gizmos.DrawWireSphere(origin, vision.viewRadius);
Quaternion leftRotation = Quaternion.Euler(0f, -vision.viewAngle * 0.5f, 0f);
Quaternion rightRotation = Quaternion.Euler(0f, vision.viewAngle * 0.5f, 0f);
Gizmos.DrawLine(origin, origin + leftRotation * transform.forward * vision.viewRadius);
Gizmos.DrawLine(origin, origin + rightRotation * transform.forward * vision.viewRadius);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f37b7500e8489416b94b2a9245935426
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+30
View File
@@ -0,0 +1,30 @@
using UnityEngine;
[RequireComponent(typeof(Collider))]
public class LevelExit : MonoBehaviour
{
private bool hasTriggered;
private void Awake()
{
Collider exitCollider = GetComponent<Collider>();
exitCollider.isTrigger = true;
}
private void OnTriggerEnter(Collider other)
{
if (hasTriggered || !other.CompareTag("Player"))
{
return;
}
PlayerHealth playerHealth = other.GetComponent<PlayerHealth>();
if (playerHealth == null || !playerHealth.IsAlive)
{
return;
}
hasTriggered = true;
playerHealth.CompleteLevel();
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c01bde08ec6450b5f977a2b6c5629f9d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+105
View File
@@ -0,0 +1,105 @@
using System.Collections.Generic;
using UnityEngine;
public class NoiseManager : MonoBehaviour
{
[System.Serializable]
public class NoiseEvent
{
public Vector3 position;
public float intensity;
public float timestamp;
}
public float noiseLifetime = 1.25f;
public static NoiseManager Instance { get; private set; }
public static IReadOnlyList<NoiseEvent> ActiveNoises => activeNoises;
private static readonly List<NoiseEvent> activeNoises = new List<NoiseEvent>();
private void Awake()
{
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
}
private void Update()
{
PruneExpiredNoise();
}
public static void EmitNoise(Vector3 position, float intensity)
{
EnsureInstance();
PruneExpiredNoise();
// Шум живёт короткое время, чтобы враги реагировали на свежие события, а не на старые следы.
activeNoises.Add(new NoiseEvent
{
position = position,
intensity = intensity,
timestamp = Time.time
});
}
public static NoiseEvent GetClosestNoise(Vector3 listenerPosition, float hearingRange)
{
PruneExpiredNoise();
NoiseEvent closest = null;
float closestDistance = float.MaxValue;
for (int i = 0; i < activeNoises.Count; i++)
{
NoiseEvent noise = activeNoises[i];
float effectiveRange = Mathf.Max(0.1f, hearingRange * noise.intensity);
float distance = Vector3.Distance(listenerPosition, noise.position);
if (distance > effectiveRange || distance >= closestDistance)
{
continue;
}
closest = noise;
closestDistance = distance;
}
return closest;
}
public static void ClearNoise()
{
activeNoises.Clear();
}
private static void EnsureInstance()
{
if (Instance != null || !Application.isPlaying)
{
return;
}
GameObject managerObject = new GameObject("NoiseManager");
Instance = managerObject.AddComponent<NoiseManager>();
}
private static void PruneExpiredNoise()
{
float lifetime = Instance != null ? Instance.noiseLifetime : 1.25f;
float minTimestamp = Time.time - lifetime;
for (int i = activeNoises.Count - 1; i >= 0; i--)
{
if (activeNoises[i].timestamp < minTimestamp)
{
activeNoises.RemoveAt(i);
}
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c64961fd4f61652f9806e6ec90f6aa58
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+84
View File
@@ -0,0 +1,84 @@
using System;
using UnityEngine;
public class PlayerHealth : MonoBehaviour
{
public int health = 100;
public bool IsAlive => health > 0;
public bool HasCompletedLevel => levelCompleted;
public event Action Died;
public event Action LevelCompleted;
private bool hasTriggeredDeath;
private bool levelCompleted;
public void TakeDamage(int amount)
{
if (!IsAlive)
{
return;
}
health = Mathf.Max(0, health - Mathf.Abs(amount));
if (!IsAlive && !hasTriggeredDeath)
{
HandleDeath();
}
}
private void Start()
{
Time.timeScale = 1f;
}
public void CompleteLevel()
{
if (!IsAlive || levelCompleted)
{
return;
}
levelCompleted = true;
DisableGameplayControl();
Debug.Log("Игрок достиг зоны выхода.");
LevelCompleted?.Invoke();
}
private void HandleDeath()
{
hasTriggeredDeath = true;
DisableGameplayControl();
Debug.Log("Игрок обнаружен и выведен из строя.");
Died?.Invoke();
}
private void DisableGameplayControl()
{
enabled = false;
SimpleFPSController fpsController = GetComponent<SimpleFPSController>();
if (fpsController != null)
{
fpsController.enabled = false;
}
PlayerStealth stealth = GetComponent<PlayerStealth>();
if (stealth != null)
{
stealth.enabled = false;
}
CharacterController characterController = GetComponent<CharacterController>();
if (characterController != null)
{
characterController.enabled = false;
}
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
Time.timeScale = 0f;
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 42e347ee8a477dca39724011d10d007c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+157
View File
@@ -0,0 +1,157 @@
using UnityEngine;
[DefaultExecutionOrder(-50)]
[RequireComponent(typeof(CharacterController))]
[RequireComponent(typeof(SimpleFPSController))]
public class PlayerStealth : MonoBehaviour
{
public enum NoiseState
{
Silent,
Low,
Medium,
High
}
[Header("References")]
public CharacterController characterController;
public SimpleFPSController fpsController;
public Camera playerCamera;
[Header("Crouch")]
public float standingHeight = 2f;
public float crouchingHeight = 1.2f;
public float crouchSpeedMultiplier = 0.55f;
public float standingCameraLocalY = 0.8f;
public float crouchCameraLocalY = 0.35f;
public float crouchTransitionSpeed = 8f;
public float crouchVisibilityMultiplier = 0.72f;
[Header("Noise")]
public float noiseEmitInterval = 0.35f;
public float crouchNoiseIntensity = 0.45f;
public float walkNoiseIntensity = 0.8f;
public float runNoiseIntensity = 1.25f;
public float testNoiseIntensity = 1.6f;
public bool IsCrouching { get; private set; }
public NoiseState CurrentNoiseState { get; private set; } = NoiseState.Silent;
public float CurrentNoiseIntensity { get; private set; }
public float VisibilityMultiplier => IsCrouching ? crouchVisibilityMultiplier : 1f;
public string CurrentNoiseLabel => CurrentNoiseState.ToString().ToLowerInvariant();
private float currentControllerHeight;
private float targetCameraLocalY;
private float lastNoiseEmitTime = -999f;
private void Awake()
{
characterController = characterController != null ? characterController : GetComponent<CharacterController>();
fpsController = fpsController != null ? fpsController : GetComponent<SimpleFPSController>();
playerCamera = playerCamera != null ? playerCamera : GetComponentInChildren<Camera>();
currentControllerHeight = standingHeight;
targetCameraLocalY = standingCameraLocalY;
}
private void Start()
{
ApplyCharacterHeightImmediate(standingHeight);
SetCameraLocalY(standingCameraLocalY);
}
private void Update()
{
UpdateCrouchState();
UpdateNoiseState();
HandleManualNoise();
}
private void LateUpdate()
{
SmoothCrouchPresentation();
}
private void UpdateCrouchState()
{
IsCrouching = Input.GetKey(KeyCode.LeftControl);
fpsController.AllowRunning = !IsCrouching;
fpsController.SpeedScale = IsCrouching ? crouchSpeedMultiplier : 1f;
targetCameraLocalY = IsCrouching ? crouchCameraLocalY : standingCameraLocalY;
}
private void UpdateNoiseState()
{
if (!fpsController.HasMovementInput)
{
SetNoiseState(NoiseState.Silent, 0f);
return;
}
if (IsCrouching)
{
SetNoiseState(NoiseState.Low, crouchNoiseIntensity);
}
else if (fpsController.IsRunning)
{
SetNoiseState(NoiseState.High, runNoiseIntensity);
}
else
{
SetNoiseState(NoiseState.Medium, walkNoiseIntensity);
}
if (CurrentNoiseState != NoiseState.Silent && Time.time >= lastNoiseEmitTime + noiseEmitInterval)
{
lastNoiseEmitTime = Time.time;
// Периодические импульсы шума проще настраивать и удобнее для AI, чем шум каждый кадр.
NoiseManager.EmitNoise(transform.position, CurrentNoiseIntensity);
}
}
private void HandleManualNoise()
{
if (Input.GetKeyDown(KeyCode.R))
{
NoiseManager.EmitNoise(transform.position, testNoiseIntensity);
}
}
private void SmoothCrouchPresentation()
{
float desiredHeight = IsCrouching ? crouchingHeight : standingHeight;
currentControllerHeight = Mathf.Lerp(currentControllerHeight, desiredHeight, Time.deltaTime * crouchTransitionSpeed);
ApplyCharacterHeightImmediate(currentControllerHeight);
if (playerCamera != null)
{
Vector3 localPosition = playerCamera.transform.localPosition;
localPosition.y = Mathf.Lerp(localPosition.y, targetCameraLocalY, Time.deltaTime * crouchTransitionSpeed);
playerCamera.transform.localPosition = localPosition;
}
}
private void ApplyCharacterHeightImmediate(float height)
{
characterController.height = height;
characterController.center = new Vector3(0f, height * 0.5f, 0f);
}
private void SetCameraLocalY(float localY)
{
if (playerCamera == null)
{
return;
}
Vector3 localPosition = playerCamera.transform.localPosition;
localPosition.y = localY;
playerCamera.transform.localPosition = localPosition;
}
private void SetNoiseState(NoiseState state, float intensity)
{
CurrentNoiseState = state;
CurrentNoiseIntensity = intensity;
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7c35ac882440faf9b9493afaac932ee6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+93
View File
@@ -0,0 +1,93 @@
using UnityEngine;
[RequireComponent(typeof(CharacterController))]
public class SimpleFPSController : MonoBehaviour
{
[Header("Movement")]
public float walkSpeed = 4f;
public float runSpeed = 7f;
public float mouseSensitivity = 2f;
public float gravity = -20f;
[Header("References")]
public CharacterController characterController;
public Camera playerCamera;
public Vector3 PlanarVelocity { get; private set; }
public bool HasMovementInput { get; private set; }
public bool IsRunning { get; private set; }
public float CurrentMoveSpeed { get; private set; }
public float SpeedScale { get; set; } = 1f;
public bool AllowRunning { get; set; } = true;
private float verticalVelocity;
private float cameraPitch;
private void Awake()
{
characterController = characterController != null ? characterController : GetComponent<CharacterController>();
playerCamera = playerCamera != null ? playerCamera : GetComponentInChildren<Camera>();
}
private void Start()
{
LockCursor(true);
}
private void OnApplicationFocus(bool hasFocus)
{
LockCursor(hasFocus);
}
private void Update()
{
HandleMouseLook();
HandleMovement();
}
private void HandleMouseLook()
{
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity;
transform.Rotate(0f, mouseX, 0f);
cameraPitch -= mouseY;
cameraPitch = Mathf.Clamp(cameraPitch, -80f, 80f);
if (playerCamera != null)
{
playerCamera.transform.localRotation = Quaternion.Euler(cameraPitch, 0f, 0f);
}
}
private void HandleMovement()
{
Vector2 input = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));
input = Vector2.ClampMagnitude(input, 1f);
HasMovementInput = input.sqrMagnitude > 0.001f;
IsRunning = AllowRunning && HasMovementInput && Input.GetKey(KeyCode.LeftShift);
CurrentMoveSpeed = (IsRunning ? runSpeed : walkSpeed) * Mathf.Max(0.01f, SpeedScale);
Vector3 moveDirection = (transform.right * input.x + transform.forward * input.y).normalized;
PlanarVelocity = moveDirection * (HasMovementInput ? CurrentMoveSpeed : 0f);
if (characterController.isGrounded && verticalVelocity < 0f)
{
verticalVelocity = -2f;
}
verticalVelocity += gravity * Time.deltaTime;
Vector3 motion = PlanarVelocity;
motion.y = verticalVelocity;
characterController.Move(motion * Time.deltaTime);
}
private static void LockCursor(bool shouldLock)
{
Cursor.lockState = shouldLock ? CursorLockMode.Locked : CursorLockMode.None;
Cursor.visible = !shouldLock;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: abb0c64b16486035691c6b0e3e895ef9
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+239
View File
@@ -0,0 +1,239 @@
using System.Text;
using UnityEngine;
using UnityEngine.UI;
public class StealthIndicator : MonoBehaviour
{
[Header("UI")]
public Image stateBar;
public Text statusText;
public Text controlsText;
public Text debugText;
public Text healthText;
public Text gameOverText;
[Header("References")]
public PlayerStealth playerStealth;
public PlayerHealth playerHealth;
private readonly StringBuilder debugBuilder = new StringBuilder(256);
private bool subscribedToPlayerHealth;
private void Start()
{
PopulateControlsText();
FindPlayerReferences();
SubscribeToPlayerHealth();
if (gameOverText != null)
{
gameOverText.gameObject.SetActive(false);
}
}
private void Update()
{
FindPlayerReferences();
SubscribeToPlayerHealth();
UpdateThreatState();
UpdateDebugText();
UpdateHealthText();
}
private void PopulateControlsText()
{
if (controlsText == null)
{
return;
}
controlsText.text =
"WASD - движение\n" +
"Mouse - обзор\n" +
"Shift - бег / больше шума\n" +
"Ctrl - присесть / меньше шума\n" +
"R - тестовый шум";
}
private void UpdateThreatState()
{
int suspicionCount = 0;
int alertCount = 0;
foreach (EnemyStateMachine enemy in EnemyStateMachine.ActiveEnemies)
{
if (enemy == null)
{
continue;
}
if (enemy.CurrentState == EnemyStateMachine.State.Alert)
{
alertCount++;
}
else if (enemy.CurrentState == EnemyStateMachine.State.Suspicion)
{
suspicionCount++;
}
}
Color stateColor = new Color(0.18f, 0.85f, 0.34f, 0.95f);
string stateLabel = "Скрытность: безопасно";
if (playerHealth != null && playerHealth.HasCompletedLevel)
{
stateColor = new Color(0.3f, 1f, 0.42f, 0.95f);
stateLabel = "Скрытность: выход достигнут";
}
else if (playerHealth != null && !playerHealth.IsAlive)
{
stateColor = new Color(0.95f, 0.15f, 0.15f, 0.95f);
stateLabel = "Скрытность: провал";
}
else if (alertCount > 0)
{
stateColor = new Color(0.95f, 0.25f, 0.2f, 0.95f);
stateLabel = "Скрытность: обнаружен";
}
else if (suspicionCount > 0)
{
stateColor = new Color(1f, 0.8f, 0.15f, 0.95f);
stateLabel = "Скрытность: подозрение";
}
if (stateBar != null)
{
stateBar.color = stateColor;
}
if (statusText != null)
{
statusText.text = stateLabel;
statusText.color = stateColor;
}
}
private void UpdateDebugText()
{
if (debugText == null)
{
return;
}
int suspicionCount = 0;
int alertCount = 0;
foreach (EnemyStateMachine enemy in EnemyStateMachine.ActiveEnemies)
{
if (enemy == null)
{
continue;
}
if (enemy.CurrentState == EnemyStateMachine.State.Suspicion)
{
suspicionCount++;
}
if (enemy.CurrentState == EnemyStateMachine.State.Alert)
{
alertCount++;
}
}
debugBuilder.Length = 0;
if (playerStealth != null)
{
debugBuilder.Append("Поза: ");
debugBuilder.Append(playerStealth.IsCrouching ? "присел" : "стоит");
debugBuilder.Append('\n');
debugBuilder.Append("Шум: ");
debugBuilder.Append(playerStealth.CurrentNoiseLabel);
debugBuilder.Append('\n');
}
else
{
debugBuilder.Append("Поза: нет данных\n");
debugBuilder.Append("Шум: нет данных\n");
}
debugBuilder.Append("Враги в Suspicion: ");
debugBuilder.Append(suspicionCount);
debugBuilder.Append('\n');
debugBuilder.Append("Враги в Alert: ");
debugBuilder.Append(alertCount);
debugText.text = debugBuilder.ToString();
}
private void UpdateHealthText()
{
if (healthText == null || playerHealth == null)
{
return;
}
healthText.text = "Здоровье: " + playerHealth.health;
healthText.color = playerHealth.IsAlive ? Color.white : Color.red;
}
private void FindPlayerReferences()
{
if (playerStealth != null && playerHealth != null)
{
return;
}
GameObject playerObject = GameObject.FindGameObjectWithTag("Player");
if (playerObject == null)
{
return;
}
if (playerStealth == null)
{
playerStealth = playerObject.GetComponent<PlayerStealth>();
}
if (playerHealth == null)
{
playerHealth = playerObject.GetComponent<PlayerHealth>();
}
}
private void SubscribeToPlayerHealth()
{
if (playerHealth == null)
{
return;
}
if (subscribedToPlayerHealth)
{
return;
}
playerHealth.Died += HandlePlayerDeath;
playerHealth.LevelCompleted += HandleLevelCompleted;
subscribedToPlayerHealth = true;
}
private void HandlePlayerDeath()
{
if (gameOverText != null)
{
gameOverText.gameObject.SetActive(true);
gameOverText.text = "Игрок устранен";
gameOverText.color = new Color(1f, 0.2f, 0.2f, 1f);
}
}
private void HandleLevelCompleted()
{
if (gameOverText != null)
{
gameOverText.gameObject.SetActive(true);
gameOverText.text = "Миссия выполнена";
gameOverText.color = new Color(0.35f, 1f, 0.45f, 1f);
}
}
}
+11
View File
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e71600b43f1c24c2c9908aa7a64a939c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 17ab44046a2b5f7dca1a972c2a105ddb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5fbd48ef955cf21199b79dc03612c979
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 23800000
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
+41
View File
@@ -0,0 +1,41 @@
{
"dependencies": {
"com.unity.collab-proxy": "2.12.4",
"com.unity.feature.development": "1.0.1",
"com.unity.textmeshpro": "3.0.7",
"com.unity.timeline": "1.7.7",
"com.unity.ugui": "1.0.0",
"com.unity.visualscripting": "1.9.4",
"com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.assetbundle": "1.0.0",
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.cloth": "1.0.0",
"com.unity.modules.director": "1.0.0",
"com.unity.modules.imageconversion": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.particlesystem": "1.0.0",
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.physics2d": "1.0.0",
"com.unity.modules.screencapture": "1.0.0",
"com.unity.modules.terrain": "1.0.0",
"com.unity.modules.terrainphysics": "1.0.0",
"com.unity.modules.tilemap": "1.0.0",
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.uielements": "1.0.0",
"com.unity.modules.umbra": "1.0.0",
"com.unity.modules.unityanalytics": "1.0.0",
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
"com.unity.modules.unitywebrequestaudio": "1.0.0",
"com.unity.modules.unitywebrequesttexture": "1.0.0",
"com.unity.modules.unitywebrequestwww": "1.0.0",
"com.unity.modules.vehicles": "1.0.0",
"com.unity.modules.video": "1.0.0",
"com.unity.modules.vr": "1.0.0",
"com.unity.modules.wind": "1.0.0",
"com.unity.modules.xr": "1.0.0"
}
}
+382
View File
@@ -0,0 +1,382 @@
{
"dependencies": {
"com.unity.collab-proxy": {
"version": "2.12.4",
"depth": 0,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.editorcoroutines": {
"version": "1.0.0",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.ext.nunit": {
"version": "1.0.6",
"depth": 2,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.feature.development": {
"version": "1.0.1",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.ide.visualstudio": "2.0.22",
"com.unity.ide.rider": "3.0.36",
"com.unity.ide.vscode": "1.2.5",
"com.unity.editorcoroutines": "1.0.0",
"com.unity.performance.profile-analyzer": "1.2.3",
"com.unity.test-framework": "1.1.33",
"com.unity.testtools.codecoverage": "1.2.6"
}
},
"com.unity.ide.rider": {
"version": "3.0.36",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.ext.nunit": "1.0.6"
},
"url": "https://packages.unity.com"
},
"com.unity.ide.visualstudio": {
"version": "2.0.22",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.test-framework": "1.1.9"
},
"url": "https://packages.unity.com"
},
"com.unity.ide.vscode": {
"version": "1.2.5",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.performance.profile-analyzer": {
"version": "1.2.3",
"depth": 1,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.settings-manager": {
"version": "2.1.0",
"depth": 2,
"source": "registry",
"dependencies": {},
"url": "https://packages.unity.com"
},
"com.unity.test-framework": {
"version": "1.1.33",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.ext.nunit": "1.0.6",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.testtools.codecoverage": {
"version": "1.2.6",
"depth": 1,
"source": "registry",
"dependencies": {
"com.unity.test-framework": "1.0.16",
"com.unity.settings-manager": "1.0.1"
},
"url": "https://packages.unity.com"
},
"com.unity.textmeshpro": {
"version": "3.0.7",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ugui": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.timeline": {
"version": "1.7.7",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.director": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.particlesystem": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.ugui": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.imgui": "1.0.0"
}
},
"com.unity.visualscripting": {
"version": "1.9.4",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ugui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.modules.ai": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.androidjni": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.animation": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.assetbundle": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.audio": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.cloth": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.physics": "1.0.0"
}
},
"com.unity.modules.director": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.animation": "1.0.0"
}
},
"com.unity.modules.imageconversion": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.imgui": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.jsonserialize": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.particlesystem": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.physics": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.physics2d": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.screencapture": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.imageconversion": "1.0.0"
}
},
"com.unity.modules.subsystems": {
"version": "1.0.0",
"depth": 1,
"source": "builtin",
"dependencies": {
"com.unity.modules.jsonserialize": "1.0.0"
}
},
"com.unity.modules.terrain": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.terrainphysics": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.terrain": "1.0.0"
}
},
"com.unity.modules.tilemap": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.physics2d": "1.0.0"
}
},
"com.unity.modules.ui": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.uielements": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
}
},
"com.unity.modules.umbra": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.unityanalytics": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0"
}
},
"com.unity.modules.unitywebrequest": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.unitywebrequestassetbundle": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.assetbundle": "1.0.0",
"com.unity.modules.unitywebrequest": "1.0.0"
}
},
"com.unity.modules.unitywebrequestaudio": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.audio": "1.0.0"
}
},
"com.unity.modules.unitywebrequesttexture": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.imageconversion": "1.0.0"
}
},
"com.unity.modules.unitywebrequestwww": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.unitywebrequestassetbundle": "1.0.0",
"com.unity.modules.unitywebrequestaudio": "1.0.0",
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.assetbundle": "1.0.0",
"com.unity.modules.imageconversion": "1.0.0"
}
},
"com.unity.modules.vehicles": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.physics": "1.0.0"
}
},
"com.unity.modules.video": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.audio": "1.0.0",
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.unitywebrequest": "1.0.0"
}
},
"com.unity.modules.vr": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.xr": "1.0.0"
}
},
"com.unity.modules.wind": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {}
},
"com.unity.modules.xr": {
"version": "1.0.0",
"depth": 0,
"source": "builtin",
"dependencies": {
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0",
"com.unity.modules.subsystems": "1.0.0"
}
}
}
}
+19
View File
@@ -0,0 +1,19 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!11 &1
AudioManager:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Volume: 1
Rolloff Scale: 1
Doppler Factor: 1
Default Speaker Mode: 2
m_SampleRate: 0
m_DSPBufferSize: 1024
m_VirtualVoiceCount: 512
m_RealVoiceCount: 32
m_SpatializerPlugin:
m_AmbisonicDecoderPlugin:
m_DisableAudio: 0
m_VirtualizeEffects: 1
m_RequestedDSPBufferSize: 1024
@@ -0,0 +1,6 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!236 &1
ClusterInputManager:
m_ObjectHideFlags: 0
m_Inputs: []
+34
View File
@@ -0,0 +1,34 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!55 &1
PhysicsManager:
m_ObjectHideFlags: 0
serializedVersion: 11
m_Gravity: {x: 0, y: -9.81, z: 0}
m_DefaultMaterial: {fileID: 0}
m_BounceThreshold: 2
m_SleepThreshold: 0.005
m_DefaultContactOffset: 0.01
m_DefaultSolverIterations: 6
m_DefaultSolverVelocityIterations: 1
m_QueriesHitBackfaces: 0
m_QueriesHitTriggers: 1
m_EnableAdaptiveForce: 0
m_ClothInterCollisionDistance: 0
m_ClothInterCollisionStiffness: 0
m_ContactsGeneration: 1
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
m_AutoSimulation: 1
m_AutoSyncTransforms: 0
m_ReuseCollisionCallbacks: 1
m_ClothInterCollisionSettingsToggle: 0
m_ContactPairsMode: 0
m_BroadphaseType: 0
m_WorldBounds:
m_Center: {x: 0, y: 0, z: 0}
m_Extent: {x: 250, y: 250, z: 250}
m_WorldSubdivisions: 8
m_FrictionType: 0
m_EnableEnhancedDeterminism: 0
m_EnableUnifiedHeightmaps: 1
m_DefaultMaxAngluarSpeed: 7
@@ -0,0 +1,8 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1045 &1
EditorBuildSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Scenes: []
m_configObjects: {}
+30
View File
@@ -0,0 +1,30 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!159 &1
EditorSettings:
m_ObjectHideFlags: 0
serializedVersion: 11
m_ExternalVersionControlSupport: Visible Meta Files
m_SerializationMode: 2
m_LineEndingsForNewScripts: 0
m_DefaultBehaviorMode: 0
m_PrefabRegularEnvironment: {fileID: 0}
m_PrefabUIEnvironment: {fileID: 0}
m_SpritePackerMode: 0
m_SpritePackerPaddingPower: 1
m_EtcTextureCompressorBehavior: 1
m_EtcTextureFastCompressor: 1
m_EtcTextureNormalCompressor: 2
m_EtcTextureBestCompressor: 4
m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref
m_ProjectGenerationRootNamespace:
m_CollabEditorSettings:
inProgressEnabled: 1
m_EnableTextureStreamingInEditMode: 1
m_EnableTextureStreamingInPlayMode: 1
m_AsyncShaderCompilation: 1
m_EnterPlayModeOptionsEnabled: 0
m_EnterPlayModeOptions: 3
m_ShowLightmapResolutionOverlay: 1
m_UseLegacyProbeSampleCount: 0
m_SerializeInlineMappingsOnOneLine: 1
+63
View File
@@ -0,0 +1,63 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!30 &1
GraphicsSettings:
m_ObjectHideFlags: 0
serializedVersion: 13
m_Deferred:
m_Mode: 1
m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
m_DeferredReflections:
m_Mode: 1
m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
m_ScreenSpaceShadows:
m_Mode: 1
m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
m_LegacyDeferred:
m_Mode: 1
m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
m_DepthNormals:
m_Mode: 1
m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
m_MotionVectors:
m_Mode: 1
m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
m_LightHalo:
m_Mode: 1
m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
m_LensFlare:
m_Mode: 1
m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
m_AlwaysIncludedShaders:
- {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
- {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
m_PreloadedShaders: []
m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
type: 0}
m_CustomRenderPipeline: {fileID: 0}
m_TransparencySortMode: 0
m_TransparencySortAxis: {x: 0, y: 0, z: 1}
m_DefaultRenderingPath: 1
m_DefaultMobileRenderingPath: 1
m_TierSettings: []
m_LightmapStripping: 0
m_FogStripping: 0
m_InstancingStripping: 0
m_LightmapKeepPlain: 1
m_LightmapKeepDirCombined: 1
m_LightmapKeepDynamicPlain: 1
m_LightmapKeepDynamicDirCombined: 1
m_LightmapKeepShadowMask: 1
m_LightmapKeepSubtractive: 1
m_FogKeepLinear: 1
m_FogKeepExp: 1
m_FogKeepExp2: 1
m_AlbedoSwatchInfos: []
m_LightsUseLinearIntensity: 0
m_LightsUseColorTemperature: 0
m_LogWhenShaderIsCompiled: 0
m_AllowEnlightenSupportForUpgradedProject: 0
+295
View File
@@ -0,0 +1,295 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!13 &1
InputManager:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Axes:
- serializedVersion: 3
m_Name: Horizontal
descriptiveName:
descriptiveNegativeName:
negativeButton: left
positiveButton: right
altNegativeButton: a
altPositiveButton: d
gravity: 3
dead: 0.001
sensitivity: 3
snap: 1
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Vertical
descriptiveName:
descriptiveNegativeName:
negativeButton: down
positiveButton: up
altNegativeButton: s
altPositiveButton: w
gravity: 3
dead: 0.001
sensitivity: 3
snap: 1
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire1
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left ctrl
altNegativeButton:
altPositiveButton: mouse 0
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire2
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left alt
altNegativeButton:
altPositiveButton: mouse 1
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire3
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: left shift
altNegativeButton:
altPositiveButton: mouse 2
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Jump
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: space
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Mouse X
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Mouse Y
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 1
joyNum: 0
- serializedVersion: 3
m_Name: Mouse ScrollWheel
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0
sensitivity: 0.1
snap: 0
invert: 0
type: 1
axis: 2
joyNum: 0
- serializedVersion: 3
m_Name: Horizontal
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0.19
sensitivity: 1
snap: 0
invert: 0
type: 2
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Vertical
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton:
altNegativeButton:
altPositiveButton:
gravity: 0
dead: 0.19
sensitivity: 1
snap: 0
invert: 1
type: 2
axis: 1
joyNum: 0
- serializedVersion: 3
m_Name: Fire1
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 0
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire2
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 1
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Fire3
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 2
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Jump
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: joystick button 3
altNegativeButton:
altPositiveButton:
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Submit
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: return
altNegativeButton:
altPositiveButton: joystick button 0
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Submit
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: enter
altNegativeButton:
altPositiveButton: space
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
- serializedVersion: 3
m_Name: Cancel
descriptiveName:
descriptiveNegativeName:
negativeButton:
positiveButton: escape
altNegativeButton:
altPositiveButton: joystick button 1
gravity: 1000
dead: 0.001
sensitivity: 1000
snap: 0
invert: 0
type: 0
axis: 0
joyNum: 0
+35
View File
@@ -0,0 +1,35 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!387306366 &1
MemorySettings:
m_ObjectHideFlags: 0
m_EditorMemorySettings:
m_MainAllocatorBlockSize: -1
m_ThreadAllocatorBlockSize: -1
m_MainGfxBlockSize: -1
m_ThreadGfxBlockSize: -1
m_CacheBlockSize: -1
m_TypetreeBlockSize: -1
m_ProfilerBlockSize: -1
m_ProfilerEditorBlockSize: -1
m_BucketAllocatorGranularity: -1
m_BucketAllocatorBucketsCount: -1
m_BucketAllocatorBlockSize: -1
m_BucketAllocatorBlockCount: -1
m_ProfilerBucketAllocatorGranularity: -1
m_ProfilerBucketAllocatorBucketsCount: -1
m_ProfilerBucketAllocatorBlockSize: -1
m_ProfilerBucketAllocatorBlockCount: -1
m_TempAllocatorSizeMain: -1
m_JobTempAllocatorBlockSize: -1
m_BackgroundJobTempAllocatorBlockSize: -1
m_JobTempAllocatorReducedBlockSize: -1
m_TempAllocatorSizeGIBakingWorker: -1
m_TempAllocatorSizeNavMeshWorker: -1
m_TempAllocatorSizeAudioWorker: -1
m_TempAllocatorSizeCloudWorker: -1
m_TempAllocatorSizeGfx: -1
m_TempAllocatorSizeJobWorker: -1
m_TempAllocatorSizeBackgroundWorker: -1
m_TempAllocatorSizePreloadManager: -1
m_PlatformMemorySettings: {}
+91
View File
@@ -0,0 +1,91 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!126 &1
NavMeshProjectSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
areas:
- name: Walkable
cost: 1
- name: Not Walkable
cost: 1
- name: Jump
cost: 2
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
- name:
cost: 1
m_LastAgentTypeID: -887442657
m_Settings:
- serializedVersion: 2
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.75
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
accuratePlacement: 0
debug:
m_Flags: 0
m_SettingNames:
- Humanoid
@@ -0,0 +1,35 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &1
MonoBehaviour:
m_ObjectHideFlags: 61
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: 13964, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_EnablePreReleasePackages: 0
m_EnablePackageDependencies: 0
m_AdvancedSettingsExpanded: 1
m_ScopedRegistriesSettingsExpanded: 1
m_SeeAllPackageVersions: 0
oneTimeWarningShown: 0
m_Registries:
- m_Id: main
m_Name:
m_Url: https://packages.unity.com
m_Scopes: []
m_IsDefault: 1
m_Capabilities: 7
m_UserSelectedRegistryName:
m_UserAddingNewScopedRegistry: 0
m_RegistryInfoDraft:
m_Modified: 0
m_ErrorMessage:
m_UserModificationsInstanceId: -830
m_OriginalInstanceId: -832
m_LoadAssets: 0
@@ -0,0 +1,5 @@
{
"m_Dictionary": {
"m_DictionaryValues": []
}
}
+56
View File
@@ -0,0 +1,56 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!19 &1
Physics2DSettings:
m_ObjectHideFlags: 0
serializedVersion: 4
m_Gravity: {x: 0, y: -9.81}
m_DefaultMaterial: {fileID: 0}
m_VelocityIterations: 8
m_PositionIterations: 3
m_VelocityThreshold: 1
m_MaxLinearCorrection: 0.2
m_MaxAngularCorrection: 8
m_MaxTranslationSpeed: 100
m_MaxRotationSpeed: 360
m_BaumgarteScale: 0.2
m_BaumgarteTimeOfImpactScale: 0.75
m_TimeToSleep: 0.5
m_LinearSleepTolerance: 0.01
m_AngularSleepTolerance: 2
m_DefaultContactOffset: 0.01
m_JobOptions:
serializedVersion: 2
useMultithreading: 0
useConsistencySorting: 0
m_InterpolationPosesPerJob: 100
m_NewContactsPerJob: 30
m_CollideContactsPerJob: 100
m_ClearFlagsPerJob: 200
m_ClearBodyForcesPerJob: 200
m_SyncDiscreteFixturesPerJob: 50
m_SyncContinuousFixturesPerJob: 50
m_FindNearestContactsPerJob: 100
m_UpdateTriggerContactsPerJob: 100
m_IslandSolverCostThreshold: 100
m_IslandSolverBodyCostScale: 1
m_IslandSolverContactCostScale: 10
m_IslandSolverJointCostScale: 10
m_IslandSolverBodiesPerJob: 50
m_IslandSolverContactsPerJob: 50
m_AutoSimulation: 1
m_QueriesHitTriggers: 1
m_QueriesStartInColliders: 1
m_CallbacksOnDisable: 1
m_ReuseCollisionCallbacks: 1
m_AutoSyncTransforms: 0
m_AlwaysShowColliders: 0
m_ShowColliderSleep: 1
m_ShowColliderContacts: 0
m_ShowColliderAABB: 0
m_ContactArrowScale: 0.2
m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+7
View File
@@ -0,0 +1,7 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1386491679 &1
PresetManager:
m_ObjectHideFlags: 0
serializedVersion: 2
m_DefaultPresets: {}
+772
View File
@@ -0,0 +1,772 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!129 &1
PlayerSettings:
m_ObjectHideFlags: 0
serializedVersion: 26
productGUID: b5b2613e0f5c65f90b0ccf62da2537ce
AndroidProfiler: 0
AndroidFilterTouchesWhenObscured: 0
AndroidEnableSustainedPerformanceMode: 0
defaultScreenOrientation: 4
targetDevice: 2
useOnDemandResources: 0
accelerometerFrequency: 60
companyName: DefaultCompany
productName: PIM_5
defaultCursor: {fileID: 0}
cursorHotspot: {x: 0, y: 0}
m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
m_ShowUnitySplashScreen: 1
m_ShowUnitySplashLogo: 1
m_SplashScreenOverlayOpacity: 1
m_SplashScreenAnimation: 1
m_SplashScreenLogoStyle: 1
m_SplashScreenDrawMode: 0
m_SplashScreenBackgroundAnimationZoom: 1
m_SplashScreenLogoAnimationZoom: 1
m_SplashScreenBackgroundLandscapeAspect: 1
m_SplashScreenBackgroundPortraitAspect: 1
m_SplashScreenBackgroundLandscapeUvs:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
m_SplashScreenBackgroundPortraitUvs:
serializedVersion: 2
x: 0
y: 0
width: 1
height: 1
m_SplashScreenLogos: []
m_VirtualRealitySplashScreen: {fileID: 0}
m_HolographicTrackingLossScreen: {fileID: 0}
defaultScreenWidth: 1920
defaultScreenHeight: 1080
defaultScreenWidthWeb: 960
defaultScreenHeightWeb: 600
m_StereoRenderingPath: 0
m_ActiveColorSpace: 1
unsupportedMSAAFallback: 0
m_SpriteBatchVertexThreshold: 300
m_MTRendering: 1
mipStripping: 0
numberOfMipsStripped: 0
numberOfMipsStrippedPerMipmapLimitGroup: {}
m_StackTraceTypes: 010000000100000001000000010000000100000001000000
iosShowActivityIndicatorOnLoading: -1
androidShowActivityIndicatorOnLoading: -1
iosUseCustomAppBackgroundBehavior: 0
allowedAutorotateToPortrait: 1
allowedAutorotateToPortraitUpsideDown: 1
allowedAutorotateToLandscapeRight: 1
allowedAutorotateToLandscapeLeft: 1
useOSAutorotation: 1
use32BitDisplayBuffer: 1
preserveFramebufferAlpha: 0
disableDepthAndStencilBuffers: 0
androidStartInFullscreen: 1
androidRenderOutsideSafeArea: 1
androidUseSwappy: 1
androidBlitType: 0
androidResizableWindow: 0
androidDefaultWindowWidth: 1920
androidDefaultWindowHeight: 1080
androidMinimumWindowWidth: 400
androidMinimumWindowHeight: 300
androidFullscreenMode: 1
androidAutoRotationBehavior: 1
androidPredictiveBackSupport: 1
defaultIsNativeResolution: 1
macRetinaSupport: 1
runInBackground: 1
captureSingleScreen: 0
muteOtherAudioSources: 0
Prepare IOS For Recording: 0
Force IOS Speakers When Recording: 0
audioSpatialExperience: 0
deferSystemGesturesMode: 0
hideHomeButton: 0
submitAnalytics: 1
usePlayerLog: 1
dedicatedServerOptimizations: 0
bakeCollisionMeshes: 0
forceSingleInstance: 0
useFlipModelSwapchain: 1
resizableWindow: 0
useMacAppStoreValidation: 0
macAppStoreCategory: public.app-category.games
gpuSkinning: 1
xboxPIXTextureCapture: 0
xboxEnableAvatar: 0
xboxEnableKinect: 0
xboxEnableKinectAutoTracking: 0
xboxEnableFitness: 0
visibleInBackground: 1
allowFullscreenSwitch: 1
fullscreenMode: 1
xboxSpeechDB: 0
xboxEnableHeadOrientation: 0
xboxEnableGuest: 0
xboxEnablePIXSampling: 0
metalFramebufferOnly: 0
xboxOneResolution: 0
xboxOneSResolution: 0
xboxOneXResolution: 3
xboxOneMonoLoggingLevel: 0
xboxOneLoggingLevel: 1
xboxOneDisableEsram: 0
xboxOneEnableTypeOptimization: 0
xboxOnePresentImmediateThreshold: 0
switchQueueCommandMemory: 0
switchQueueControlMemory: 16384
switchQueueComputeMemory: 262144
switchNVNShaderPoolsGranularity: 33554432
switchNVNDefaultPoolsGranularity: 16777216
switchNVNOtherPoolsGranularity: 16777216
switchGpuScratchPoolGranularity: 2097152
switchAllowGpuScratchShrinking: 0
switchNVNMaxPublicTextureIDCount: 0
switchNVNMaxPublicSamplerIDCount: 0
switchNVNGraphicsFirmwareMemory: 32
switchMaxWorkerMultiple: 8
stadiaPresentMode: 0
stadiaTargetFramerate: 0
vulkanNumSwapchainBuffers: 3
vulkanEnableSetSRGBWrite: 0
vulkanEnablePreTransform: 1
vulkanEnableLateAcquireNextImage: 0
vulkanEnableCommandBufferRecycling: 1
loadStoreDebugModeEnabled: 0
visionOSBundleVersion: 1.0
tvOSBundleVersion: 1.0
bundleVersion: 0.1
preloadedAssets: []
metroInputSource: 0
wsaTransparentSwapchain: 0
m_HolographicPauseOnTrackingLoss: 1
xboxOneDisableKinectGpuReservation: 1
xboxOneEnable7thCore: 1
vrSettings:
enable360StereoCapture: 0
isWsaHolographicRemotingEnabled: 0
enableFrameTimingStats: 0
enableOpenGLProfilerGPURecorders: 1
allowHDRDisplaySupport: 0
useHDRDisplay: 0
hdrBitDepth: 0
m_ColorGamuts: 00000000
targetPixelDensity: 30
resolutionScalingMode: 0
resetResolutionOnWindowResize: 0
androidSupportedAspectRatio: 1
androidMaxAspectRatio: 2.1
applicationIdentifier: {}
buildNumber:
Standalone: 0
VisionOS: 0
iPhone: 0
tvOS: 0
overrideDefaultApplicationIdentifier: 0
AndroidBundleVersionCode: 1
AndroidMinSdkVersion: 22
AndroidTargetSdkVersion: 0
AndroidPreferredInstallLocation: 1
aotOptions:
stripEngineCode: 1
iPhoneStrippingLevel: 0
iPhoneScriptCallOptimization: 0
ForceInternetPermission: 0
ForceSDCardPermission: 0
CreateWallpaper: 0
APKExpansionFiles: 0
keepLoadedShadersAlive: 0
StripUnusedMeshComponents: 1
strictShaderVariantMatching: 0
VertexChannelCompressionMask: 4054
iPhoneSdkVersion: 988
iOSSimulatorArchitecture: 0
iOSTargetOSVersionString: 12.0
tvOSSdkVersion: 0
tvOSSimulatorArchitecture: 0
tvOSRequireExtendedGameController: 0
tvOSTargetOSVersionString: 12.0
VisionOSSdkVersion: 0
VisionOSTargetOSVersionString: 1.0
uIPrerenderedIcon: 0
uIRequiresPersistentWiFi: 0
uIRequiresFullScreen: 1
uIStatusBarHidden: 1
uIExitOnSuspend: 0
uIStatusBarStyle: 0
appleTVSplashScreen: {fileID: 0}
appleTVSplashScreen2x: {fileID: 0}
tvOSSmallIconLayers: []
tvOSSmallIconLayers2x: []
tvOSLargeIconLayers: []
tvOSLargeIconLayers2x: []
tvOSTopShelfImageLayers: []
tvOSTopShelfImageLayers2x: []
tvOSTopShelfImageWideLayers: []
tvOSTopShelfImageWideLayers2x: []
iOSLaunchScreenType: 0
iOSLaunchScreenPortrait: {fileID: 0}
iOSLaunchScreenLandscape: {fileID: 0}
iOSLaunchScreenBackgroundColor:
serializedVersion: 2
rgba: 0
iOSLaunchScreenFillPct: 100
iOSLaunchScreenSize: 100
iOSLaunchScreenCustomXibPath:
iOSLaunchScreeniPadType: 0
iOSLaunchScreeniPadImage: {fileID: 0}
iOSLaunchScreeniPadBackgroundColor:
serializedVersion: 2
rgba: 0
iOSLaunchScreeniPadFillPct: 100
iOSLaunchScreeniPadSize: 100
iOSLaunchScreeniPadCustomXibPath:
iOSLaunchScreenCustomStoryboardPath:
iOSLaunchScreeniPadCustomStoryboardPath:
iOSDeviceRequirements: []
iOSURLSchemes: []
macOSURLSchemes: []
iOSBackgroundModes: 0
iOSMetalForceHardShadows: 0
metalEditorSupport: 1
metalAPIValidation: 1
metalCompileShaderBinary: 0
iOSRenderExtraFrameOnPause: 0
iosCopyPluginsCodeInsteadOfSymlink: 0
appleDeveloperTeamID:
iOSManualSigningProvisioningProfileID:
tvOSManualSigningProvisioningProfileID:
VisionOSManualSigningProvisioningProfileID:
iOSManualSigningProvisioningProfileType: 0
tvOSManualSigningProvisioningProfileType: 0
VisionOSManualSigningProvisioningProfileType: 0
appleEnableAutomaticSigning: 0
iOSRequireARKit: 0
iOSAutomaticallyDetectAndAddCapabilities: 1
appleEnableProMotion: 0
shaderPrecisionModel: 0
clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
templatePackageId: com.unity.template.3d@8.1.3
templateDefaultScene: Assets/Scenes/SampleScene.unity
useCustomMainManifest: 0
useCustomLauncherManifest: 0
useCustomMainGradleTemplate: 0
useCustomLauncherGradleManifest: 0
useCustomBaseGradleTemplate: 0
useCustomGradlePropertiesTemplate: 0
useCustomGradleSettingsTemplate: 0
useCustomProguardFile: 0
AndroidTargetArchitectures: 1
AndroidTargetDevices: 0
AndroidSplashScreenScale: 0
androidSplashScreen: {fileID: 0}
AndroidKeystoreName:
AndroidKeyaliasName:
AndroidEnableArmv9SecurityFeatures: 0
AndroidBuildApkPerCpuArchitecture: 0
AndroidTVCompatibility: 0
AndroidIsGame: 1
AndroidEnableTango: 0
androidEnableBanner: 1
androidUseLowAccuracyLocation: 0
androidUseCustomKeystore: 0
m_AndroidBanners:
- width: 320
height: 180
banner: {fileID: 0}
androidGamepadSupportLevel: 0
chromeosInputEmulation: 1
AndroidMinifyRelease: 0
AndroidMinifyDebug: 0
AndroidValidateAppBundleSize: 1
AndroidAppBundleSizeToValidate: 150
m_BuildTargetIcons: []
m_BuildTargetPlatformIcons: []
m_BuildTargetBatching:
- m_BuildTarget: Standalone
m_StaticBatching: 1
m_DynamicBatching: 0
- m_BuildTarget: tvOS
m_StaticBatching: 1
m_DynamicBatching: 0
- m_BuildTarget: Android
m_StaticBatching: 1
m_DynamicBatching: 0
- m_BuildTarget: iPhone
m_StaticBatching: 1
m_DynamicBatching: 0
- m_BuildTarget: WebGL
m_StaticBatching: 0
m_DynamicBatching: 0
m_BuildTargetShaderSettings: []
m_BuildTargetGraphicsJobs:
- m_BuildTarget: MacStandaloneSupport
m_GraphicsJobs: 0
- m_BuildTarget: Switch
m_GraphicsJobs: 1
- m_BuildTarget: MetroSupport
m_GraphicsJobs: 1
- m_BuildTarget: AppleTVSupport
m_GraphicsJobs: 0
- m_BuildTarget: BJMSupport
m_GraphicsJobs: 1
- m_BuildTarget: LinuxStandaloneSupport
m_GraphicsJobs: 1
- m_BuildTarget: PS4Player
m_GraphicsJobs: 1
- m_BuildTarget: iOSSupport
m_GraphicsJobs: 0
- m_BuildTarget: WindowsStandaloneSupport
m_GraphicsJobs: 1
- m_BuildTarget: XboxOnePlayer
m_GraphicsJobs: 1
- m_BuildTarget: LuminSupport
m_GraphicsJobs: 0
- m_BuildTarget: AndroidPlayer
m_GraphicsJobs: 0
- m_BuildTarget: WebGLSupport
m_GraphicsJobs: 0
m_BuildTargetGraphicsJobMode:
- m_BuildTarget: PS4Player
m_GraphicsJobMode: 0
- m_BuildTarget: XboxOnePlayer
m_GraphicsJobMode: 0
m_BuildTargetGraphicsAPIs:
- m_BuildTarget: AndroidPlayer
m_APIs: 150000000b000000
m_Automatic: 1
- m_BuildTarget: iOSSupport
m_APIs: 10000000
m_Automatic: 1
- m_BuildTarget: AppleTVSupport
m_APIs: 10000000
m_Automatic: 1
- m_BuildTarget: WebGLSupport
m_APIs: 0b000000
m_Automatic: 1
m_BuildTargetVRSettings:
- m_BuildTarget: Standalone
m_Enabled: 0
m_Devices:
- Oculus
- OpenVR
m_DefaultShaderChunkSizeInMB: 16
m_DefaultShaderChunkCount: 0
openGLRequireES31: 0
openGLRequireES31AEP: 0
openGLRequireES32: 0
m_TemplateCustomTags: {}
mobileMTRendering:
Android: 1
iPhone: 1
tvOS: 1
m_BuildTargetGroupLightmapEncodingQuality:
- m_BuildTarget: Android
m_EncodingQuality: 1
- m_BuildTarget: iPhone
m_EncodingQuality: 1
- m_BuildTarget: tvOS
m_EncodingQuality: 1
m_BuildTargetGroupHDRCubemapEncodingQuality:
- m_BuildTarget: Android
m_EncodingQuality: 1
- m_BuildTarget: iPhone
m_EncodingQuality: 1
- m_BuildTarget: tvOS
m_EncodingQuality: 1
m_BuildTargetGroupLightmapSettings: []
m_BuildTargetGroupLoadStoreDebugModeSettings: []
m_BuildTargetNormalMapEncoding:
- m_BuildTarget: Android
m_Encoding: 1
- m_BuildTarget: iPhone
m_Encoding: 1
- m_BuildTarget: tvOS
m_Encoding: 1
m_BuildTargetDefaultTextureCompressionFormat:
- m_BuildTarget: Android
m_Format: 3
playModeTestRunnerEnabled: 0
runPlayModeTestAsEditModeTest: 0
actionOnDotNetUnhandledException: 1
enableInternalProfiler: 0
logObjCUncaughtExceptions: 1
enableCrashReportAPI: 0
cameraUsageDescription:
locationUsageDescription:
microphoneUsageDescription:
bluetoothUsageDescription:
macOSTargetOSVersion: 10.13.0
switchNMETAOverride:
switchNetLibKey:
switchSocketMemoryPoolSize: 6144
switchSocketAllocatorPoolSize: 128
switchSocketConcurrencyLimit: 14
switchScreenResolutionBehavior: 2
switchUseCPUProfiler: 0
switchEnableFileSystemTrace: 0
switchLTOSetting: 0
switchApplicationID: 0x01004b9000490000
switchNSODependencies:
switchCompilerFlags:
switchTitleNames_0:
switchTitleNames_1:
switchTitleNames_2:
switchTitleNames_3:
switchTitleNames_4:
switchTitleNames_5:
switchTitleNames_6:
switchTitleNames_7:
switchTitleNames_8:
switchTitleNames_9:
switchTitleNames_10:
switchTitleNames_11:
switchTitleNames_12:
switchTitleNames_13:
switchTitleNames_14:
switchTitleNames_15:
switchPublisherNames_0:
switchPublisherNames_1:
switchPublisherNames_2:
switchPublisherNames_3:
switchPublisherNames_4:
switchPublisherNames_5:
switchPublisherNames_6:
switchPublisherNames_7:
switchPublisherNames_8:
switchPublisherNames_9:
switchPublisherNames_10:
switchPublisherNames_11:
switchPublisherNames_12:
switchPublisherNames_13:
switchPublisherNames_14:
switchPublisherNames_15:
switchIcons_0: {fileID: 0}
switchIcons_1: {fileID: 0}
switchIcons_2: {fileID: 0}
switchIcons_3: {fileID: 0}
switchIcons_4: {fileID: 0}
switchIcons_5: {fileID: 0}
switchIcons_6: {fileID: 0}
switchIcons_7: {fileID: 0}
switchIcons_8: {fileID: 0}
switchIcons_9: {fileID: 0}
switchIcons_10: {fileID: 0}
switchIcons_11: {fileID: 0}
switchIcons_12: {fileID: 0}
switchIcons_13: {fileID: 0}
switchIcons_14: {fileID: 0}
switchIcons_15: {fileID: 0}
switchSmallIcons_0: {fileID: 0}
switchSmallIcons_1: {fileID: 0}
switchSmallIcons_2: {fileID: 0}
switchSmallIcons_3: {fileID: 0}
switchSmallIcons_4: {fileID: 0}
switchSmallIcons_5: {fileID: 0}
switchSmallIcons_6: {fileID: 0}
switchSmallIcons_7: {fileID: 0}
switchSmallIcons_8: {fileID: 0}
switchSmallIcons_9: {fileID: 0}
switchSmallIcons_10: {fileID: 0}
switchSmallIcons_11: {fileID: 0}
switchSmallIcons_12: {fileID: 0}
switchSmallIcons_13: {fileID: 0}
switchSmallIcons_14: {fileID: 0}
switchSmallIcons_15: {fileID: 0}
switchManualHTML:
switchAccessibleURLs:
switchLegalInformation:
switchMainThreadStackSize: 1048576
switchPresenceGroupId:
switchLogoHandling: 0
switchReleaseVersion: 0
switchDisplayVersion: 1.0.0
switchStartupUserAccount: 0
switchSupportedLanguagesMask: 0
switchLogoType: 0
switchApplicationErrorCodeCategory:
switchUserAccountSaveDataSize: 0
switchUserAccountSaveDataJournalSize: 0
switchApplicationAttribute: 0
switchCardSpecSize: -1
switchCardSpecClock: -1
switchRatingsMask: 0
switchRatingsInt_0: 0
switchRatingsInt_1: 0
switchRatingsInt_2: 0
switchRatingsInt_3: 0
switchRatingsInt_4: 0
switchRatingsInt_5: 0
switchRatingsInt_6: 0
switchRatingsInt_7: 0
switchRatingsInt_8: 0
switchRatingsInt_9: 0
switchRatingsInt_10: 0
switchRatingsInt_11: 0
switchRatingsInt_12: 0
switchLocalCommunicationIds_0:
switchLocalCommunicationIds_1:
switchLocalCommunicationIds_2:
switchLocalCommunicationIds_3:
switchLocalCommunicationIds_4:
switchLocalCommunicationIds_5:
switchLocalCommunicationIds_6:
switchLocalCommunicationIds_7:
switchParentalControl: 0
switchAllowsScreenshot: 1
switchAllowsVideoCapturing: 1
switchAllowsRuntimeAddOnContentInstall: 0
switchDataLossConfirmation: 0
switchUserAccountLockEnabled: 0
switchSystemResourceMemory: 16777216
switchSupportedNpadStyles: 22
switchNativeFsCacheSize: 32
switchIsHoldTypeHorizontal: 0
switchSupportedNpadCount: 8
switchEnableTouchScreen: 1
switchSocketConfigEnabled: 0
switchTcpInitialSendBufferSize: 32
switchTcpInitialReceiveBufferSize: 64
switchTcpAutoSendBufferSizeMax: 256
switchTcpAutoReceiveBufferSizeMax: 256
switchUdpSendBufferSize: 9
switchUdpReceiveBufferSize: 42
switchSocketBufferEfficiency: 4
switchSocketInitializeEnabled: 1
switchNetworkInterfaceManagerInitializeEnabled: 1
switchDisableHTCSPlayerConnection: 0
switchUseNewStyleFilepaths: 1
switchUseLegacyFmodPriorities: 0
switchUseMicroSleepForYield: 1
switchEnableRamDiskSupport: 0
switchMicroSleepForYieldTime: 25
switchRamDiskSpaceSize: 12
ps4NPAgeRating: 12
ps4NPTitleSecret:
ps4NPTrophyPackPath:
ps4ParentalLevel: 11
ps4ContentID: ED1633-NPXX51362_00-0000000000000000
ps4Category: 0
ps4MasterVersion: 01.00
ps4AppVersion: 01.00
ps4AppType: 0
ps4ParamSfxPath:
ps4VideoOutPixelFormat: 0
ps4VideoOutInitialWidth: 1920
ps4VideoOutBaseModeInitialWidth: 1920
ps4VideoOutReprojectionRate: 60
ps4PronunciationXMLPath:
ps4PronunciationSIGPath:
ps4BackgroundImagePath:
ps4StartupImagePath:
ps4StartupImagesFolder:
ps4IconImagesFolder:
ps4SaveDataImagePath:
ps4SdkOverride:
ps4BGMPath:
ps4ShareFilePath:
ps4ShareOverlayImagePath:
ps4PrivacyGuardImagePath:
ps4ExtraSceSysFile:
ps4NPtitleDatPath:
ps4RemotePlayKeyAssignment: -1
ps4RemotePlayKeyMappingDir:
ps4PlayTogetherPlayerCount: 0
ps4EnterButtonAssignment: 1
ps4ApplicationParam1: 0
ps4ApplicationParam2: 0
ps4ApplicationParam3: 0
ps4ApplicationParam4: 0
ps4DownloadDataSize: 0
ps4GarlicHeapSize: 2048
ps4ProGarlicHeapSize: 2560
playerPrefsMaxSize: 32768
ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
ps4pnSessions: 1
ps4pnPresence: 1
ps4pnFriends: 1
ps4pnGameCustomData: 1
playerPrefsSupport: 0
enableApplicationExit: 0
resetTempFolder: 1
restrictedAudioUsageRights: 0
ps4UseResolutionFallback: 0
ps4ReprojectionSupport: 0
ps4UseAudio3dBackend: 0
ps4UseLowGarlicFragmentationMode: 1
ps4SocialScreenEnabled: 0
ps4ScriptOptimizationLevel: 0
ps4Audio3dVirtualSpeakerCount: 14
ps4attribCpuUsage: 0
ps4PatchPkgPath:
ps4PatchLatestPkgPath:
ps4PatchChangeinfoPath:
ps4PatchDayOne: 0
ps4attribUserManagement: 0
ps4attribMoveSupport: 0
ps4attrib3DSupport: 0
ps4attribShareSupport: 0
ps4attribExclusiveVR: 0
ps4disableAutoHideSplash: 0
ps4videoRecordingFeaturesUsed: 0
ps4contentSearchFeaturesUsed: 0
ps4CompatibilityPS5: 0
ps4AllowPS5Detection: 0
ps4GPU800MHz: 1
ps4attribEyeToEyeDistanceSettingVR: 0
ps4IncludedModules: []
ps4attribVROutputEnabled: 0
monoEnv:
splashScreenBackgroundSourceLandscape: {fileID: 0}
splashScreenBackgroundSourcePortrait: {fileID: 0}
blurSplashScreenBackground: 1
spritePackerPolicy:
webGLMemorySize: 16
webGLExceptionSupport: 1
webGLNameFilesAsHashes: 0
webGLShowDiagnostics: 0
webGLDataCaching: 1
webGLDebugSymbols: 0
webGLEmscriptenArgs:
webGLModulesDirectory:
webGLTemplate: APPLICATION:Default
webGLAnalyzeBuildSize: 0
webGLUseEmbeddedResources: 0
webGLCompressionFormat: 1
webGLWasmArithmeticExceptions: 0
webGLLinkerTarget: 1
webGLThreadsSupport: 0
webGLDecompressionFallback: 0
webGLInitialMemorySize: 32
webGLMaximumMemorySize: 2048
webGLMemoryGrowthMode: 2
webGLMemoryLinearGrowthStep: 16
webGLMemoryGeometricGrowthStep: 0.2
webGLMemoryGeometricGrowthCap: 96
webGLPowerPreference: 2
scriptingDefineSymbols: {}
additionalCompilerArguments: {}
platformArchitecture: {}
scriptingBackend: {}
il2cppCompilerConfiguration: {}
il2cppCodeGeneration: {}
managedStrippingLevel:
EmbeddedLinux: 1
GameCoreScarlett: 1
GameCoreXboxOne: 1
Nintendo Switch: 1
PS4: 1
PS5: 1
QNX: 1
Stadia: 1
VisionOS: 1
WebGL: 1
Windows Store Apps: 1
XboxOne: 1
iPhone: 1
tvOS: 1
incrementalIl2cppBuild: {}
suppressCommonWarnings: 1
allowUnsafeCode: 0
useDeterministicCompilation: 1
additionalIl2CppArgs:
scriptingRuntimeVersion: 1
gcIncremental: 1
gcWBarrierValidation: 0
apiCompatibilityLevelPerPlatform: {}
m_RenderingPath: 1
m_MobileRenderingPath: 1
metroPackageName: PIM_5
metroPackageVersion:
metroCertificatePath:
metroCertificatePassword:
metroCertificateSubject:
metroCertificateIssuer:
metroCertificateNotAfter: 0000000000000000
metroApplicationDescription: PIM_5
wsaImages: {}
metroTileShortName:
metroTileShowName: 0
metroMediumTileShowName: 0
metroLargeTileShowName: 0
metroWideTileShowName: 0
metroSupportStreamingInstall: 0
metroLastRequiredScene: 0
metroDefaultTileSize: 1
metroTileForegroundText: 2
metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628, a: 1}
metroSplashScreenUseBackgroundColor: 0
syncCapabilities: 0
platformCapabilities: {}
metroTargetDeviceFamilies: {}
metroFTAName:
metroFTAFileTypes: []
metroProtocolName:
vcxProjDefaultLanguage:
XboxOneProductId:
XboxOneUpdateKey:
XboxOneSandboxId:
XboxOneContentId:
XboxOneTitleId:
XboxOneSCId:
XboxOneGameOsOverridePath:
XboxOnePackagingOverridePath:
XboxOneAppManifestOverridePath:
XboxOneVersion: 1.0.0.0
XboxOnePackageEncryption: 0
XboxOnePackageUpdateGranularity: 2
XboxOneDescription:
XboxOneLanguage:
- enus
XboxOneCapability: []
XboxOneGameRating: {}
XboxOneIsContentPackage: 0
XboxOneEnhancedXboxCompatibilityMode: 0
XboxOneEnableGPUVariability: 1
XboxOneSockets: {}
XboxOneSplashScreen: {fileID: 0}
XboxOneAllowedProductIds: []
XboxOnePersistentLocalStorageSize: 0
XboxOneXTitleMemory: 8
XboxOneOverrideIdentityName:
XboxOneOverrideIdentityPublisher:
vrEditorSettings: {}
cloudServicesEnabled:
UNet: 1
luminIcon:
m_Name:
m_ModelFolderPath:
m_PortalFolderPath:
luminCert:
m_CertPath:
m_SignPackage: 1
luminIsChannelApp: 0
luminVersion:
m_VersionCode: 1
m_VersionName:
hmiPlayerDataPath:
hmiForceSRGBBlit: 1
embeddedLinuxEnableGamepadInput: 1
hmiLogStartupTiming: 0
hmiCpuConfiguration:
apiCompatibilityLevel: 6
activeInputHandler: 0
windowsGamepadBackendHint: 0
cloudProjectId: 27ab750c-2665-4daf-a772-c630c42ebb3c
framebufferDepthMemorylessMode: 0
qualitySettingsNames: []
projectName: PIM_5
organizationId: rubykkxx
cloudEnabled: 0
legacyClampBlendShapeWeights: 0
hmiLoadingImage: {fileID: 0}
platformRequiresReadableAssets: 0
virtualTexturingSupportEnabled: 0
insecureHttpOption: 0
+2
View File
@@ -0,0 +1,2 @@
m_EditorVersion: 2022.3.62f3
m_EditorVersionWithRevision: 2022.3.62f3 (96770f904ca7)
+234
View File
@@ -0,0 +1,234 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!47 &1
QualitySettings:
m_ObjectHideFlags: 0
serializedVersion: 5
m_CurrentQuality: 5
m_QualitySettings:
- serializedVersion: 2
name: Very Low
pixelLightCount: 0
shadows: 0
shadowResolution: 0
shadowProjection: 1
shadowCascades: 1
shadowDistance: 15
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 1
textureQuality: 1
anisotropicTextures: 0
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
vSyncCount: 0
lodBias: 0.3
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 4
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Low
pixelLightCount: 0
shadows: 0
shadowResolution: 0
shadowProjection: 1
shadowCascades: 1
shadowDistance: 20
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 2
textureQuality: 0
anisotropicTextures: 0
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
vSyncCount: 0
lodBias: 0.4
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 16
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Medium
pixelLightCount: 1
shadows: 1
shadowResolution: 0
shadowProjection: 1
shadowCascades: 1
shadowDistance: 20
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 0
blendWeights: 2
textureQuality: 0
anisotropicTextures: 1
antiAliasing: 0
softParticles: 0
softVegetation: 0
realtimeReflectionProbes: 0
billboardsFaceCameraPosition: 0
vSyncCount: 1
lodBias: 0.7
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 64
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: High
pixelLightCount: 2
shadows: 2
shadowResolution: 1
shadowProjection: 1
shadowCascades: 2
shadowDistance: 40
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
blendWeights: 2
textureQuality: 0
anisotropicTextures: 1
antiAliasing: 0
softParticles: 0
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 1
lodBias: 1
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 256
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Very High
pixelLightCount: 3
shadows: 2
shadowResolution: 2
shadowProjection: 1
shadowCascades: 2
shadowDistance: 70
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
blendWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 2
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 1
lodBias: 1.5
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 1024
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
- serializedVersion: 2
name: Ultra
pixelLightCount: 4
shadows: 2
shadowResolution: 2
shadowProjection: 1
shadowCascades: 4
shadowDistance: 150
shadowNearPlaneOffset: 3
shadowCascade2Split: 0.33333334
shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
shadowmaskMode: 1
blendWeights: 4
textureQuality: 0
anisotropicTextures: 2
antiAliasing: 2
softParticles: 1
softVegetation: 1
realtimeReflectionProbes: 1
billboardsFaceCameraPosition: 1
vSyncCount: 1
lodBias: 2
maximumLODLevel: 0
streamingMipmapsActive: 0
streamingMipmapsAddAllCameras: 1
streamingMipmapsMemoryBudget: 512
streamingMipmapsRenderersPerFrame: 512
streamingMipmapsMaxLevelReduction: 2
streamingMipmapsMaxFileIORequests: 1024
particleRaycastBudget: 4096
asyncUploadTimeSlice: 2
asyncUploadBufferSize: 16
asyncUploadPersistentBuffer: 1
resolutionScalingFixedDPIFactor: 1
excludedTargetPlatforms: []
m_PerPlatformDefaultQuality:
Android: 2
Lumin: 5
GameCoreScarlett: 5
GameCoreXboxOne: 5
Nintendo 3DS: 5
Nintendo Switch: 5
PS4: 5
PS5: 5
Stadia: 5
Standalone: 5
WebGL: 3
Windows Store Apps: 5
XboxOne: 5
iPhone: 2
tvOS: 2
+121
View File
@@ -0,0 +1,121 @@
{
"templatePinStates": [],
"dependencyTypeInfos": [
{
"userAdded": false,
"type": "UnityEngine.AnimationClip",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEditor.Animations.AnimatorController",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEngine.AnimatorOverrideController",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEditor.Audio.AudioMixerController",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEngine.ComputeShader",
"defaultInstantiationMode": 1
},
{
"userAdded": false,
"type": "UnityEngine.Cubemap",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEngine.GameObject",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEditor.LightingDataAsset",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEngine.LightingSettings",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEngine.Material",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEditor.MonoScript",
"defaultInstantiationMode": 1
},
{
"userAdded": false,
"type": "UnityEngine.PhysicMaterial",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEngine.PhysicsMaterial2D",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEngine.Rendering.VolumeProfile",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEditor.SceneAsset",
"defaultInstantiationMode": 1
},
{
"userAdded": false,
"type": "UnityEngine.Shader",
"defaultInstantiationMode": 1
},
{
"userAdded": false,
"type": "UnityEngine.ShaderVariantCollection",
"defaultInstantiationMode": 1
},
{
"userAdded": false,
"type": "UnityEngine.Texture",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEngine.Texture2D",
"defaultInstantiationMode": 0
},
{
"userAdded": false,
"type": "UnityEngine.Timeline.TimelineAsset",
"defaultInstantiationMode": 0
}
],
"defaultDependencyTypeInfo": {
"userAdded": false,
"type": "<default_scene_template_dependencies>",
"defaultInstantiationMode": 1
},
"newSceneOverride": 0
}
+44
View File
@@ -0,0 +1,44 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!78 &1
TagManager:
serializedVersion: 2
tags:
- Player
layers:
- Default
- TransparentFX
- Ignore Raycast
-
- Water
- UI
-
-
- Player
- Cover
- Obstacle
- Vision
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
m_SortingLayers:
- name: Default
uniqueID: 0
locked: 0
+9
View File
@@ -0,0 +1,9 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!5 &1
TimeManager:
m_ObjectHideFlags: 0
Fixed Timestep: 0.02
Maximum Allowed Timestep: 0.33333334
m_TimeScale: 1
Maximum Particle Timestep: 0.03
@@ -0,0 +1,36 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!310 &1
UnityConnectSettings:
m_ObjectHideFlags: 0
serializedVersion: 1
m_Enabled: 0
m_TestMode: 0
m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
m_ConfigUrl: https://config.uca.cloud.unity3d.com
m_DashboardUrl: https://dashboard.unity3d.com
m_TestInitMode: 0
CrashReportingSettings:
m_EventUrl: https://perf-events.cloud.unity3d.com
m_Enabled: 0
m_LogBufferSize: 10
m_CaptureEditorExceptions: 1
UnityPurchasingSettings:
m_Enabled: 0
m_TestMode: 0
UnityAnalyticsSettings:
m_Enabled: 0
m_TestMode: 0
m_InitializeOnStartup: 1
m_PackageRequiringCoreStatsPresent: 0
UnityAdsSettings:
m_Enabled: 0
m_InitializeOnStartup: 1
m_TestMode: 0
m_IosGameId:
m_AndroidGameId:
m_GameIds: {}
m_GameId:
PerformanceReportingSettings:
m_Enabled: 0
+12
View File
@@ -0,0 +1,12 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!937362698 &1
VFXManager:
m_ObjectHideFlags: 0
m_IndirectShader: {fileID: 0}
m_CopyBufferShader: {fileID: 0}
m_SortShader: {fileID: 0}
m_StripUpdateShader: {fileID: 0}
m_RenderPipeSettingsPath:
m_FixedTimeStep: 0.016666668
m_MaxDeltaTime: 0.05
@@ -0,0 +1,8 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!890905787 &1
VersionControlSettings:
m_ObjectHideFlags: 0
m_Mode: Visible Meta Files
m_CollabEditorSettings:
inProgressEnabled: 1
+10
View File
@@ -0,0 +1,10 @@
{
"m_SettingKeys": [
"VR Device Disabled",
"VR Device User Alert"
],
"m_SettingValues": [
"False",
"False"
]
}