Basic map creator

Basic map creation from a svg file (AI generated)
This commit is contained in:
Banane_Rotative
2025-11-14 13:12:54 +01:00
parent 8acbd5c9e5
commit f0dab10761
10 changed files with 494 additions and 50 deletions

8
Assets/Editor.meta Normal file
View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0007f25b1fa247d40922e19f7ffa9ae5
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,320 @@
// SvgToFlatMeshEditor.cs
// Save to Assets/Editor/
// Requires com.unity.vectorgraphics package.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEngine;
using UnityEditor;
using Unity.VectorGraphics; // From com.unity.vectorgraphics
public class SvgToFlatMeshEditor : EditorWindow
{
TextAsset svgFile;
float pixelsPerUnit = 100.0f;
Vector2 scale = Vector2.one;
Material defaultMaterial;
Transform parentTransform;
bool generateColliders = true;
float meshScale = 1f;
VectorUtils.TessellationOptions tessOptions = new VectorUtils.TessellationOptions()
{
StepDistance = 1.0f,
MaxCordDeviation = 0.5f,
MaxTanAngleDeviation = 0.1f,
SamplingStepSize = 0.01f
};
[MenuItem("Tools/SVG → Flat Mesh Regions")]
static void OpenWindow()
{
var w = GetWindow<SvgToFlatMeshEditor>("SVG → Flat Mesh");
w.minSize = new Vector2(460, 320);
}
void OnGUI()
{
EditorGUILayout.LabelField("SVG → Flat Mesh (separate GameObjects per fill color)", EditorStyles.boldLabel);
EditorGUILayout.Space();
svgFile = (TextAsset)EditorGUILayout.ObjectField("SVG File (.svg)", svgFile, typeof(TextAsset), false);
pixelsPerUnit = EditorGUILayout.FloatField(new GUIContent("Pixels Per Unit", "Rasterization scale used by VectorUtils. Higher = more detail"), pixelsPerUnit);
meshScale = EditorGUILayout.FloatField(new GUIContent("Global Mesh Scale", "Scale applied to resulting mesh in world units"), meshScale);
defaultMaterial = (Material)EditorGUILayout.ObjectField("Default Material", defaultMaterial, typeof(Material), false);
parentTransform = (Transform)EditorGUILayout.ObjectField("Parent Transform", parentTransform, typeof(Transform), true);
generateColliders = EditorGUILayout.Toggle("Generate MeshColliders", generateColliders);
EditorGUILayout.Space();
EditorGUILayout.LabelField("Tessellation Options", EditorStyles.boldLabel);
tessOptions.StepDistance = EditorGUILayout.FloatField("Step Distance", tessOptions.StepDistance);
tessOptions.MaxCordDeviation = EditorGUILayout.FloatField("Max Cord Deviation", tessOptions.MaxCordDeviation);
tessOptions.MaxTanAngleDeviation = EditorGUILayout.FloatField("Max Tan Angle Deviation", tessOptions.MaxTanAngleDeviation);
tessOptions.SamplingStepSize = EditorGUILayout.FloatField("Sampling Step Size", tessOptions.SamplingStepSize);
EditorGUILayout.Space();
if (GUILayout.Button("Generate Meshes from SVG"))
{
if (svgFile == null)
{
EditorUtility.DisplayDialog("Error", "Please assign an SVG (.svg) TextAsset.", "OK");
}
else
{
try
{
GenerateMeshesFromSVG();
}
catch (Exception e)
{
Debug.LogException(e);
EditorUtility.DisplayDialog("Error", "Exception: " + e.Message, "OK");
}
}
}
EditorGUILayout.Space();
EditorGUILayout.HelpBox("This tool creates one GameObject per fill-color region in the SVG. Each GameObject receives a MeshRenderer + MeshFilter and, optionally, a MeshCollider. Output meshes lie flat on the XZ plane (Y = 0).", MessageType.Info);
}
void GenerateMeshesFromSVG()
{
// Parse SVG
var svgText = svgFile.text;
if (string.IsNullOrEmpty(svgText))
{
EditorUtility.DisplayDialog("Error", "SVG file is empty.", "OK");
return;
}
var sceneInfo = SVGParser.ImportSVG(new StringReader(svgText));
if (sceneInfo.Equals(default(SVGParser.SceneInfo)) || sceneInfo.Scene == null)
{
EditorUtility.DisplayDialog("Error", "Failed to import SVG. Make sure the file is valid and Vector Graphics package is installed.", "OK");
return;
}
// Gather shapes by fill color. We'll traverse the scene tree.
var shapesByColor = new Dictionary<Color, List<SceneNodeShapeEntry>>(new ColorEqualityComparer());
TraverseAndCollectShapes(sceneInfo.Scene.Root, Matrix2D.identity, shapesByColor);
if (shapesByColor.Count == 0)
{
EditorUtility.DisplayDialog("Result", "No filled shapes found in the SVG.", "OK");
return;
}
// Create parent container
GameObject container = new GameObject(Path.GetFileNameWithoutExtension(svgFile.name) + "_SVG_Meshes");
if (parentTransform != null) container.transform.SetParent(parentTransform, false);
// For each color group, tessellate shapes into geometry and build a mesh
foreach (var kv in shapesByColor)
{
Color color = kv.Key;
List<SceneNodeShapeEntry> entries = kv.Value;
// Build a temporary scene that contains all these shapes combined (preserving transforms)
Scene tmpScene = new Scene();
tmpScene.Root = new SceneNode();
tmpScene.Root.Children = new List<SceneNode>();
foreach (var entry in entries)
{
// create a shallow copy Node with transform and the original shapes (the shape objects can be reused)
SceneNode copyNode = new SceneNode()
{
Transform = entry.Node.Transform, // keep transform
Shapes = new List<Shape>() { entry.Shape }
};
tmpScene.Root.Children.Add(copyNode);
}
// Tessellate the tmpScene
var geoms = VectorUtils.TessellateScene(tmpScene, tessOptions);
if (geoms == null || geoms.Count == 0)
{
Debug.LogWarning($"No geometry generated for color {color} (skipping).");
continue;
}
// Build Mesh from geoms
Mesh mesh = BuildMeshFromGeometries(geoms, meshScale);
// Create GameObject for this color region
string colorName = ColorToName(color);
GameObject go = new GameObject($"Region_{colorName}");
go.transform.SetParent(container.transform, false);
var mf = go.AddComponent<MeshFilter>();
mf.sharedMesh = mesh;
var mr = go.AddComponent<MeshRenderer>();
if (defaultMaterial != null)
{
// instantiate a material so each region can have its own color without overwriting the original asset
Material matInstance = new Material(defaultMaterial);
matInstance.color = color;
mr.sharedMaterial = matInstance;
}
else
{
// Create a quick default material
var mat = new Material(Shader.Find("Standard"));
mat.color = color;
mr.sharedMaterial = mat;
}
if (generateColliders)
{
var mc = go.AddComponent<MeshCollider>();
mc.sharedMesh = mesh;
mc.convex = false; // keep non-convex for flat terrain; set to true if needed for rigidbodies
}
// Optionally set layer / tag etc. User can attach audio trigger components later to each go.
}
// Focus selection on created container
Selection.activeGameObject = container;
EditorUtility.DisplayDialog("Done", $"Generated {shapesByColor.Count} region GameObjects under '{container.name}'.", "OK");
}
// Recursively traverse scene nodes and collect filled shapes
void TraverseAndCollectShapes(SceneNode node, Matrix2D parentTransform, Dictionary<Color, List<SceneNodeShapeEntry>> shapesByColor)
{
if (node == null) return;
// Combine transforms (VectorGraphics uses Matrix2D)
Matrix2D currentTransform = parentTransform * node.Transform;
if (node.Shapes != null && node.Shapes.Count > 0)
{
foreach (var shape in node.Shapes)
{
if (shape == null) continue;
// Only treat fills (SolidFill)
if (shape.Fill is SolidFill sf)
{
Color col = sf.Color;
// Note: color comes as linear RGBA. Convert to Unity's Color (already same type)
if (!shapesByColor.TryGetValue(col, out List<SceneNodeShapeEntry> list))
{
list = new List<SceneNodeShapeEntry>();
shapesByColor[col] = list;
}
// Store the shape together with a node that carries the proper transform
SceneNode fakeNode = new SceneNode()
{
Transform = currentTransform,
Shapes = new List<Shape>() { shape }
};
list.Add(new SceneNodeShapeEntry() { Node = fakeNode, Shape = shape });
}
}
}
if (node.Children != null && node.Children.Count > 0)
{
foreach (var c in node.Children)
TraverseAndCollectShapes(c, currentTransform, shapesByColor);
}
}
// Build a Mesh from VectorUtils.Geometry list
Mesh BuildMeshFromGeometries(List<VectorUtils.Geometry> geoms, float globalScale)
{
var verts = new List<Vector3>();
var uvs = new List<Vector2>();
var indices = new List<int>();
int baseIndex = 0;
foreach (var g in geoms)
{
if (g == null || g.Vertices == null || g.Indices == null) continue;
// Add vertices (VectorUtils uses Vector2 for geometry XY)
for (int i = 0; i < g.Vertices.Length; i++)
{
var v2 = g.Vertices[i];
// Map XY -> XZ plane; Y = 0
Vector3 v3 = new Vector3(v2.x, 0f, v2.y) * globalScale;
verts.Add(v3);
// UVs: If geometry provides UV, use it; otherwise use XY mapped to UV
if (g.UVs != null && g.UVs.Length == g.Vertices.Length)
uvs.Add(g.UVs[i]);
else
uvs.Add(new Vector2(v2.x, v2.y));
}
// Add indices (triangles)
for (int i = 0; i < g.Indices.Length; i += 3)
{
// VectorUtils yields triangles in clockwise winding; Unity expects clockwise for front? We'll keep it.
indices.Add(baseIndex + g.Indices[i]);
indices.Add(baseIndex + g.Indices[i + 1]);
indices.Add(baseIndex + g.Indices[i + 2]);
}
baseIndex += g.Vertices.Length;
}
Mesh mesh = new Mesh();
mesh.name = "SVG_Mesh";
mesh.indexFormat = (verts.Count > 65535) ? UnityEngine.Rendering.IndexFormat.UInt32 : UnityEngine.Rendering.IndexFormat.UInt16;
mesh.SetVertices(verts);
mesh.SetTriangles(indices, 0);
if (uvs != null && uvs.Count == verts.Count)
mesh.SetUVs(0, uvs);
mesh.RecalculateNormals();
mesh.RecalculateBounds();
return mesh;
}
// Helper to produce a safe string for color names
string ColorToName(Color c)
{
// Try to present RGBA hex
Color32 cc = c;
return $"{cc.r:X2}{cc.g:X2}{cc.b:X2}{(cc.a < 255 ? cc.a.ToString("X2") : "")}";
}
// Small helper type to keep a shape and associated node (with transform)
class SceneNodeShapeEntry
{
public SceneNode Node;
public Shape Shape;
}
// Simple color comparer for use as Dictionary key
class ColorEqualityComparer : IEqualityComparer<Color>
{
public bool Equals(Color x, Color y)
{
// Compare with exactness; you could add tolerance if you want near-colors grouped
return Mathf.Approximately(x.r, y.r) && Mathf.Approximately(x.g, y.g) &&
Mathf.Approximately(x.b, y.b) && Mathf.Approximately(x.a, y.a);
}
public int GetHashCode(Color obj)
{
unchecked
{
int hash = 17;
hash = hash * 23 + Mathf.RoundToInt(obj.r * 255f);
hash = hash * 23 + Mathf.RoundToInt(obj.g * 255f);
hash = hash * 23 + Mathf.RoundToInt(obj.b * 255f);
hash = hash * 23 + Mathf.RoundToInt(obj.a * 255f);
return hash;
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9264c9156cb5dbc4cbfeaaa27c0ab93b

View File

@@ -55,6 +55,10 @@ MonoBehaviour:
- rid: 8712630790384254976 - rid: 8712630790384254976
- rid: 6455115202312536064 - rid: 6455115202312536064
- rid: 6455115202312536065 - rid: 6455115202312536065
- rid: 6596437875811942460
- rid: 6596437875811942461
- rid: 6596437875811942462
- rid: 6596437875811942463
m_RuntimeSettings: m_RuntimeSettings:
m_List: [] m_List: []
m_AssetVersion: 8 m_AssetVersion: 8
@@ -97,6 +101,93 @@ MonoBehaviour:
type: {class: UniversalRenderPipelineEditorAssets, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} type: {class: UniversalRenderPipelineEditorAssets, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data: data:
m_DefaultSettingsVolumeProfile: {fileID: 11400000, guid: eda47df5b85f4f249abf7abd73db2cb2, type: 2} m_DefaultSettingsVolumeProfile: {fileID: 11400000, guid: eda47df5b85f4f249abf7abd73db2cb2, type: 2}
- rid: 6596437875811942460
type: {class: ScreenSpaceAmbientOcclusionPersistentResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data:
m_Shader: {fileID: 4800000, guid: 0849e84e3d62649e8882e9d6f056a017, type: 3}
m_Version: 0
- rid: 6596437875811942461
type: {class: PostProcessData/TextureResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data:
blueNoise16LTex:
- {fileID: 2800000, guid: 81200413a40918d4d8702e94db29911c, type: 3}
- {fileID: 2800000, guid: d50c5e07c9911a74982bddf7f3075e7b, type: 3}
- {fileID: 2800000, guid: 1134690bf9216164dbc75050e35b7900, type: 3}
- {fileID: 2800000, guid: 7ce2118f74614a94aa8a0cdf2e6062c3, type: 3}
- {fileID: 2800000, guid: 2ca97df9d1801e84a8a8f2c53cb744f0, type: 3}
- {fileID: 2800000, guid: e63eef8f54aa9dc4da9a5ac094b503b5, type: 3}
- {fileID: 2800000, guid: 39451254daebd6d40b52899c1f1c0c1b, type: 3}
- {fileID: 2800000, guid: c94ad916058dff743b0f1c969ddbe660, type: 3}
- {fileID: 2800000, guid: ed5ea7ce59ca8ec4f9f14bf470a30f35, type: 3}
- {fileID: 2800000, guid: 071e954febf155243a6c81e48f452644, type: 3}
- {fileID: 2800000, guid: 96aaab9cc247d0b4c98132159688c1af, type: 3}
- {fileID: 2800000, guid: fc3fa8f108657e14486697c9a84ccfc5, type: 3}
- {fileID: 2800000, guid: bfed3e498947fcb4890b7f40f54d85b9, type: 3}
- {fileID: 2800000, guid: d512512f4af60a442ab3458489412954, type: 3}
- {fileID: 2800000, guid: 47a45908f6db0cb44a0d5e961143afec, type: 3}
- {fileID: 2800000, guid: 4dcc0502f8586f941b5c4a66717205e8, type: 3}
- {fileID: 2800000, guid: 9d92991794bb5864c8085468b97aa067, type: 3}
- {fileID: 2800000, guid: 14381521ff11cb74abe3fe65401c23be, type: 3}
- {fileID: 2800000, guid: d36f0fe53425e08499a2333cf423634c, type: 3}
- {fileID: 2800000, guid: d4044ea2490d63b43aa1765f8efbf8a9, type: 3}
- {fileID: 2800000, guid: c9bd74624d8070f429e3f46d161f9204, type: 3}
- {fileID: 2800000, guid: d5c9b274310e5524ebe32a4e4da3df1f, type: 3}
- {fileID: 2800000, guid: f69770e54f2823f43badf77916acad83, type: 3}
- {fileID: 2800000, guid: 10b6c6d22e73dea46a8ab36b6eebd629, type: 3}
- {fileID: 2800000, guid: a2ec5cbf5a9b64345ad3fab0912ddf7b, type: 3}
- {fileID: 2800000, guid: 1c3c6d69a645b804fa232004b96b7ad3, type: 3}
- {fileID: 2800000, guid: d18a24d7b4ed50f4387993566d9d3ae2, type: 3}
- {fileID: 2800000, guid: c989e1ed85cf7154caa922fec53e6af6, type: 3}
- {fileID: 2800000, guid: ff47e5a0f105eb34883b973e51f4db62, type: 3}
- {fileID: 2800000, guid: fa042edbfc40fbd4bad0ab9d505b1223, type: 3}
- {fileID: 2800000, guid: 896d9004736809c4fb5973b7c12eb8b9, type: 3}
- {fileID: 2800000, guid: 179f794063d2a66478e6e726f84a65bc, type: 3}
filmGrainTex:
- {fileID: 2800000, guid: 654c582f7f8a5a14dbd7d119cbde215d, type: 3}
- {fileID: 2800000, guid: dd77ffd079630404e879388999033049, type: 3}
- {fileID: 2800000, guid: 1097e90e1306e26439701489f391a6c0, type: 3}
- {fileID: 2800000, guid: f0b67500f7fad3b4c9f2b13e8f41ba6e, type: 3}
- {fileID: 2800000, guid: 9930fb4528622b34687b00bbe6883de7, type: 3}
- {fileID: 2800000, guid: bd9e8c758250ef449a4b4bfaad7a2133, type: 3}
- {fileID: 2800000, guid: 510a2f57334933e4a8dbabe4c30204e4, type: 3}
- {fileID: 2800000, guid: b4db8180660810945bf8d55ab44352ad, type: 3}
- {fileID: 2800000, guid: fd2fd78b392986e42a12df2177d3b89c, type: 3}
- {fileID: 2800000, guid: 5cdee82a77d13994f83b8fdabed7c301, type: 3}
smaaAreaTex: {fileID: 2800000, guid: d1f1048909d55cd4fa1126ab998f617e, type: 3}
smaaSearchTex: {fileID: 2800000, guid: 51eee22c2a633ef4aada830eed57c3fd, type: 3}
m_TexturesResourcesVersion: 0
- rid: 6596437875811942462
type: {class: ScreenSpaceAmbientOcclusionDynamicResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data:
m_BlueNoise256Textures:
- {fileID: 2800000, guid: 36f118343fc974119bee3d09e2111500, type: 3}
- {fileID: 2800000, guid: 4b7b083e6b6734e8bb2838b0b50a0bc8, type: 3}
- {fileID: 2800000, guid: c06cc21c692f94f5fb5206247191eeee, type: 3}
- {fileID: 2800000, guid: cb76dd40fa7654f9587f6a344f125c9a, type: 3}
- {fileID: 2800000, guid: e32226222ff144b24bf3a5a451de54bc, type: 3}
- {fileID: 2800000, guid: 3302065f671a8450b82c9ddf07426f3a, type: 3}
- {fileID: 2800000, guid: 56a77a3e8d64f47b6afe9e3c95cb57d5, type: 3}
m_Version: 0
- rid: 6596437875811942463
type: {class: PostProcessData/ShaderResources, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data:
stopNanPS: {fileID: 4800000, guid: 1121bb4e615ca3c48b214e79e841e823, type: 3}
subpixelMorphologicalAntialiasingPS: {fileID: 4800000, guid: 63eaba0ebfb82cc43bde059b4a8c65f6, type: 3}
gaussianDepthOfFieldPS: {fileID: 4800000, guid: 5e7134d6e63e0bc47a1dd2669cedb379, type: 3}
bokehDepthOfFieldPS: {fileID: 4800000, guid: 2aed67ad60045d54ba3a00c91e2d2631, type: 3}
cameraMotionBlurPS: {fileID: 4800000, guid: 1edcd131364091c46a17cbff0b1de97a, type: 3}
paniniProjectionPS: {fileID: 4800000, guid: a15b78cf8ca26ca4fb2090293153c62c, type: 3}
lutBuilderLdrPS: {fileID: 4800000, guid: 65df88701913c224d95fc554db28381a, type: 3}
lutBuilderHdrPS: {fileID: 4800000, guid: ec9fec698a3456d4fb18cf8bacb7a2bc, type: 3}
bloomPS: {fileID: 4800000, guid: 5f1864addb451f54bae8c86d230f736e, type: 3}
temporalAntialiasingPS: {fileID: 4800000, guid: 9c70c1a35ff15f340b38ea84842358bf, type: 3}
LensFlareDataDrivenPS: {fileID: 4800000, guid: 6cda457ac28612740adb23da5d39ea92, type: 3}
LensFlareScreenSpacePS: {fileID: 4800000, guid: 701880fecb344ea4c9cd0db3407ab287, type: 3}
scalingSetupPS: {fileID: 4800000, guid: e8ee25143a34b8c4388709ea947055d1, type: 3}
easuPS: {fileID: 4800000, guid: 562b7ae4f629f144aa97780546fce7c6, type: 3}
uberPostPS: {fileID: 4800000, guid: e7857e9d0c934dc4f83f270f8447b006, type: 3}
finalPostPassPS: {fileID: 4800000, guid: c49e63ed1bbcb334780a3bd19dfed403, type: 3}
m_ShaderResourcesVersion: 0
- rid: 6852985685364965376 - rid: 6852985685364965376
type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime} type: {class: URPShaderStrippingSetting, ns: UnityEngine.Rendering.Universal, asm: Unity.RenderPipelines.Universal.Runtime}
data: data:

View File

@@ -1,16 +1,17 @@
{ {
"dependencies": { "dependencies": {
"com.unity.ai.navigation": "2.0.6", "com.unity.ai.navigation": "2.0.9",
"com.unity.collab-proxy": "2.7.1", "com.unity.collab-proxy": "2.9.3",
"com.unity.ide.rider": "3.0.31", "com.unity.ide.rider": "3.0.38",
"com.unity.ide.visualstudio": "2.0.22", "com.unity.ide.visualstudio": "2.0.23",
"com.unity.inputsystem": "1.13.1", "com.unity.inputsystem": "1.14.2",
"com.unity.multiplayer.center": "1.0.0", "com.unity.multiplayer.center": "1.0.0",
"com.unity.render-pipelines.universal": "17.0.4", "com.unity.render-pipelines.universal": "17.0.4",
"com.unity.test-framework": "1.4.6", "com.unity.test-framework": "1.6.0",
"com.unity.timeline": "1.8.7", "com.unity.timeline": "1.8.9",
"com.unity.ugui": "2.0.0", "com.unity.ugui": "2.0.0",
"com.unity.visualscripting": "1.9.5", "com.unity.vectorgraphics": "2.0.0-preview.25",
"com.unity.visualscripting": "1.9.7",
"com.unity.modules.accessibility": "1.0.0", "com.unity.modules.accessibility": "1.0.0",
"com.unity.modules.ai": "1.0.0", "com.unity.modules.ai": "1.0.0",
"com.unity.modules.androidjni": "1.0.0", "com.unity.modules.androidjni": "1.0.0",

View File

@@ -1,7 +1,13 @@
{ {
"dependencies": { "dependencies": {
"com.unity.2d.sprite": {
"version": "1.0.0",
"depth": 1,
"source": "builtin",
"dependencies": {}
},
"com.unity.ai.navigation": { "com.unity.ai.navigation": {
"version": "2.0.6", "version": "2.0.9",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
@@ -10,7 +16,7 @@
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.burst": { "com.unity.burst": {
"version": "1.8.19", "version": "1.8.25",
"depth": 2, "depth": 2,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
@@ -20,20 +26,21 @@
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.collab-proxy": { "com.unity.collab-proxy": {
"version": "2.7.1", "version": "2.9.3",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": {}, "dependencies": {},
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.collections": { "com.unity.collections": {
"version": "2.5.1", "version": "2.6.2",
"depth": 2, "depth": 2,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
"com.unity.burst": "1.8.17", "com.unity.burst": "1.8.23",
"com.unity.test-framework": "1.4.5", "com.unity.mathematics": "1.3.2",
"com.unity.nuget.mono-cecil": "1.11.4", "com.unity.test-framework": "1.4.6",
"com.unity.nuget.mono-cecil": "1.11.5",
"com.unity.test-framework.performance": "3.0.3" "com.unity.test-framework.performance": "3.0.3"
}, },
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
@@ -41,12 +48,11 @@
"com.unity.ext.nunit": { "com.unity.ext.nunit": {
"version": "2.0.5", "version": "2.0.5",
"depth": 1, "depth": 1,
"source": "registry", "source": "builtin",
"dependencies": {}, "dependencies": {}
"url": "https://packages.unity.com"
}, },
"com.unity.ide.rider": { "com.unity.ide.rider": {
"version": "3.0.31", "version": "3.0.38",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
@@ -55,7 +61,7 @@
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.ide.visualstudio": { "com.unity.ide.visualstudio": {
"version": "2.0.22", "version": "2.0.23",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
@@ -64,7 +70,7 @@
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.inputsystem": { "com.unity.inputsystem": {
"version": "1.13.1", "version": "1.14.2",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
@@ -88,7 +94,7 @@
} }
}, },
"com.unity.nuget.mono-cecil": { "com.unity.nuget.mono-cecil": {
"version": "1.11.4", "version": "1.11.5",
"depth": 3, "depth": 3,
"source": "registry", "source": "registry",
"dependencies": {}, "dependencies": {},
@@ -99,7 +105,7 @@
"depth": 1, "depth": 1,
"source": "builtin", "source": "builtin",
"dependencies": { "dependencies": {
"com.unity.burst": "1.8.14", "com.unity.burst": "1.8.20",
"com.unity.mathematics": "1.3.2", "com.unity.mathematics": "1.3.2",
"com.unity.ugui": "2.0.0", "com.unity.ugui": "2.0.0",
"com.unity.collections": "2.4.3", "com.unity.collections": "2.4.3",
@@ -154,28 +160,27 @@
} }
}, },
"com.unity.test-framework": { "com.unity.test-framework": {
"version": "1.4.6", "version": "1.6.0",
"depth": 0, "depth": 0,
"source": "registry", "source": "builtin",
"dependencies": { "dependencies": {
"com.unity.ext.nunit": "2.0.3", "com.unity.ext.nunit": "2.0.3",
"com.unity.modules.imgui": "1.0.0", "com.unity.modules.imgui": "1.0.0",
"com.unity.modules.jsonserialize": "1.0.0" "com.unity.modules.jsonserialize": "1.0.0"
}, }
"url": "https://packages.unity.com"
}, },
"com.unity.test-framework.performance": { "com.unity.test-framework.performance": {
"version": "3.0.3", "version": "3.2.0",
"depth": 3, "depth": 3,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
"com.unity.test-framework": "1.1.31", "com.unity.test-framework": "1.1.33",
"com.unity.modules.jsonserialize": "1.0.0" "com.unity.modules.jsonserialize": "1.0.0"
}, },
"url": "https://packages.unity.com" "url": "https://packages.unity.com"
}, },
"com.unity.timeline": { "com.unity.timeline": {
"version": "1.8.7", "version": "1.8.9",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {
@@ -195,8 +200,27 @@
"com.unity.modules.imgui": "1.0.0" "com.unity.modules.imgui": "1.0.0"
} }
}, },
"com.unity.vectorgraphics": {
"version": "2.0.0-preview.25",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ugui": "1.0.0",
"com.unity.2d.sprite": "1.0.0",
"com.unity.modules.ui": "1.0.0",
"com.unity.modules.physics": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.physics2d": "1.0.0",
"com.unity.modules.uielements": "1.0.0",
"com.unity.modules.imageconversion": "1.0.0",
"com.unity.modules.unitywebrequest": "1.0.0",
"com.unity.modules.unitywebrequestwww": "1.0.0",
"com.unity.modules.unitywebrequesttexture": "1.0.0"
},
"url": "https://packages.unity.com"
},
"com.unity.visualscripting": { "com.unity.visualscripting": {
"version": "1.9.5", "version": "1.9.7",
"depth": 0, "depth": 0,
"source": "registry", "source": "registry",
"dependencies": { "dependencies": {

View File

@@ -12,11 +12,13 @@ MonoBehaviour:
m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_EnablePreviewPackages: 0 m_EnablePreReleasePackages: 1
m_EnablePackageDependencies: 0
m_AdvancedSettingsExpanded: 1 m_AdvancedSettingsExpanded: 1
m_ScopedRegistriesSettingsExpanded: 1 m_ScopedRegistriesSettingsExpanded: 1
oneTimeWarningShown: 0 m_SeeAllPackageVersions: 0
m_DismissPreviewPackagesInUse: 0
oneTimeWarningShown: 1
oneTimeDeprecatedPopUpShown: 0
m_Registries: m_Registries:
- m_Id: main - m_Id: main
m_Name: m_Name:
@@ -24,20 +26,15 @@ MonoBehaviour:
m_Scopes: [] m_Scopes: []
m_IsDefault: 1 m_IsDefault: 1
m_Capabilities: 7 m_Capabilities: 7
m_ConfigSource: 0
m_Compliance:
m_Status: 0
m_Violations: []
m_UserSelectedRegistryName: m_UserSelectedRegistryName:
m_UserAddingNewScopedRegistry: 0 m_UserAddingNewScopedRegistry: 0
m_RegistryInfoDraft: m_RegistryInfoDraft:
m_ErrorMessage:
m_Original:
m_Id:
m_Name:
m_Url:
m_Scopes: []
m_IsDefault: 0
m_Capabilities: 0
m_Modified: 0 m_Modified: 0
m_Name: m_ErrorMessage:
m_Url: m_UserModificationsInstanceId: -866
m_Scopes: m_OriginalInstanceId: -868
- m_LoadAssets: 0
m_SelectedScopeIndex: 0

View File

@@ -1,2 +1,2 @@
m_EditorVersion: 6000.0.40f1 m_EditorVersion: 6000.0.60f1
m_EditorVersionWithRevision: 6000.0.40f1 (157d81624ddf) m_EditorVersionWithRevision: 6000.0.60f1 (f02d6f9f9009)

View File

@@ -13,6 +13,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
shaderVariantLimit: 128 shaderVariantLimit: 128
overrideShaderVariantLimit: 0
customInterpolatorErrorThreshold: 32 customInterpolatorErrorThreshold: 32
customInterpolatorWarningThreshold: 16 customInterpolatorWarningThreshold: 16
customHeatmapValues: {fileID: 0} customHeatmapValues: {fileID: 0}

View File

@@ -12,4 +12,4 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3} m_Script: {fileID: 11500000, guid: 247994e1f5a72c2419c26a37e9334c01, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
m_LastMaterialVersion: 9 m_LastMaterialVersion: 10