├── .gitignore ├── Assets ├── Tools.meta └── Tools │ ├── AudioFactory.meta │ ├── AudioFactory │ ├── Captures~ │ │ ├── AudioClipper.gif │ │ └── AudioVolumeUnify.jpg │ ├── Documentation.meta │ ├── Documentation │ │ ├── AudioFactory.md │ │ └── AudioFactory.md.meta │ ├── Editor.meta │ ├── Editor │ │ ├── AudioClipWriter.cs │ │ ├── AudioClipWriter.cs.meta │ │ ├── AudioClipper.cs │ │ ├── AudioClipper.cs.meta │ │ ├── AudioVolumeUnify.cs │ │ ├── AudioVolumeUnify.cs.meta │ │ ├── Lame.meta │ │ ├── Lame │ │ │ ├── LibMp3Lame.cs │ │ │ ├── LibMp3Lame.cs.meta │ │ │ ├── MP3FileWriter.cs │ │ │ ├── MP3FileWriter.cs.meta │ │ │ ├── NAudio.meta │ │ │ └── NAudio │ │ │ │ ├── AdpcmWaveFormat.cs │ │ │ │ ├── AdpcmWaveFormat.cs.meta │ │ │ │ ├── AudioMediaSubtypes.cs │ │ │ │ ├── AudioMediaSubtypes.cs.meta │ │ │ │ ├── Gsm610WaveFormat.cs │ │ │ │ ├── Gsm610WaveFormat.cs.meta │ │ │ │ ├── IWaveProvider.cs │ │ │ │ ├── IWaveProvider.cs.meta │ │ │ │ ├── RiffChunk.cs │ │ │ │ ├── RiffChunk.cs.meta │ │ │ │ ├── WaveFileReader.cs │ │ │ │ ├── WaveFileReader.cs.meta │ │ │ │ ├── WaveFormat.cs │ │ │ │ ├── WaveFormat.cs.meta │ │ │ │ ├── WaveFormatEncoding.cs │ │ │ │ ├── WaveFormatEncoding.cs.meta │ │ │ │ ├── WaveFormatExtensible.cs │ │ │ │ ├── WaveFormatExtensible.cs.meta │ │ │ │ ├── WaveFormatExtraData.cs │ │ │ │ ├── WaveFormatExtraData.cs.meta │ │ │ │ ├── WaveStream.cs │ │ │ │ └── WaveStream.cs.meta │ │ ├── PopupContent.cs │ │ ├── PopupContent.cs.meta │ │ ├── VorbisPlugin.meta │ │ ├── VorbisPlugin │ │ │ ├── Impl.meta │ │ │ ├── Impl │ │ │ │ ├── VorbisPluginImpl.asmdef │ │ │ │ ├── VorbisPluginImpl.asmdef.meta │ │ │ │ ├── src.meta │ │ │ │ └── src │ │ │ │ │ ├── NativeBridge.cs │ │ │ │ │ ├── NativeBridge.cs.meta │ │ │ │ │ ├── NativeErrorCode.cs │ │ │ │ │ ├── NativeErrorCode.cs.meta │ │ │ │ │ ├── NativeErrorException.cs │ │ │ │ │ ├── NativeErrorException.cs.meta │ │ │ │ │ ├── VorbisPlugin.cs │ │ │ │ │ └── VorbisPlugin.cs.meta │ │ │ ├── Plugins.meta │ │ │ └── Plugins │ │ │ │ ├── OSX.meta │ │ │ │ ├── OSX │ │ │ │ ├── libVorbisPlugin.dylib │ │ │ │ └── libVorbisPlugin.dylib.meta │ │ │ │ ├── Windows.meta │ │ │ │ └── Windows │ │ │ │ ├── x86.meta │ │ │ │ ├── x86 │ │ │ │ ├── VorbisPlugin.dll │ │ │ │ └── VorbisPlugin.dll.meta │ │ │ │ ├── x86_64.meta │ │ │ │ └── x86_64 │ │ │ │ ├── VorbisPlugin.dll │ │ │ │ └── VorbisPlugin.dll.meta │ │ ├── WYTools.AudioFactory.Editor.asmdef │ │ └── WYTools.AudioFactory.Editor.asmdef.meta │ ├── README.md │ ├── README.md.meta │ ├── package.json │ └── package.json.meta │ ├── BatchRename.meta │ ├── BatchRename │ ├── Captures~ │ │ └── BatchRename.gif │ ├── Documentation.meta │ ├── Documentation │ │ ├── BatchRename.md │ │ └── BatchRename.md.meta │ ├── Editor.meta │ ├── Editor │ │ ├── BatchRename.cs │ │ ├── BatchRename.cs.meta │ │ ├── WYTools.BatchRename.Editor.asmdef │ │ └── WYTools.BatchRename.Editor.asmdef.meta │ ├── README.md │ ├── README.md.meta │ ├── package.json │ └── package.json.meta │ ├── EasySplinePath2D.meta │ ├── EasySplinePath2D │ ├── Demo.meta │ ├── Demo │ │ ├── DemoScene.unity │ │ ├── DemoScene.unity.meta │ │ ├── DynamicPath.cs │ │ ├── DynamicPath.cs.meta │ │ ├── EasyRoad.cs │ │ ├── EasyRoad.cs.meta │ │ ├── Editor.meta │ │ ├── Editor │ │ │ ├── EasyRoadEditor.cs │ │ │ └── EasyRoadEditor.cs.meta │ │ ├── FollowPath.cs │ │ ├── FollowPath.cs.meta │ │ ├── Materials.meta │ │ ├── Materials │ │ │ ├── FloorMat.mat │ │ │ ├── FloorMat.mat.meta │ │ │ ├── RoadMat.mat │ │ │ └── RoadMat.mat.meta │ │ ├── Sprites.meta │ │ └── Sprites │ │ │ ├── Blue_Car.png │ │ │ ├── Blue_Car.png.meta │ │ │ ├── FloorTile_S.jpg │ │ │ ├── FloorTile_S.jpg.meta │ │ │ ├── Materials.meta │ │ │ ├── Materials │ │ │ ├── Zeppelin.mat │ │ │ └── Zeppelin.mat.meta │ │ │ ├── Zeppelin.png │ │ │ ├── Zeppelin.png.meta │ │ │ ├── track.png │ │ │ └── track.png.meta │ ├── Documentation.meta │ ├── Documentation │ │ ├── EasySplinePath2D_Documentation.pdf │ │ ├── EasySplinePath2D_Documentation.pdf.meta │ │ ├── EasySplinePath2D_ScriptingAPI.pdf │ │ └── EasySplinePath2D_ScriptingAPI.pdf.meta │ ├── EasySplinePath2D.prefab │ ├── EasySplinePath2D.prefab.meta │ ├── Scripts.meta │ └── Scripts │ │ ├── Bezier.cs │ │ ├── Bezier.cs.meta │ │ ├── EasySplinePath2D.cs │ │ ├── EasySplinePath2D.cs.meta │ │ ├── Editor.meta │ │ ├── Editor │ │ ├── EasySplinePath2DEditor.cs │ │ ├── EasySplinePath2DEditor.cs.meta │ │ ├── Resources.meta │ │ └── Resources │ │ │ ├── EasySplinePath2D.meta │ │ │ └── EasySplinePath2D │ │ │ ├── add.png │ │ │ ├── add.png.meta │ │ │ ├── boton_recto.png │ │ │ ├── boton_recto.png.meta │ │ │ ├── boton_recto_u.png │ │ │ ├── boton_recto_u.png.meta │ │ │ ├── control.png │ │ │ ├── control.png.meta │ │ │ ├── curve.png │ │ │ ├── curve.png.meta │ │ │ ├── mode_auto.png │ │ │ ├── mode_auto.png.meta │ │ │ ├── mode_auto_u.png │ │ │ ├── mode_auto_u.png.meta │ │ │ ├── mode_free.png │ │ │ ├── mode_free.png.meta │ │ │ ├── mode_free_u.png │ │ │ ├── mode_free_u.png.meta │ │ │ ├── mode_lock.png │ │ │ ├── mode_lock.png.meta │ │ │ ├── mode_lock_u.png │ │ │ ├── mode_lock_u.png.meta │ │ │ ├── node.png │ │ │ ├── node.png.meta │ │ │ ├── node_delete.png │ │ │ ├── node_delete.png.meta │ │ │ ├── node_selected.png │ │ │ ├── node_selected.png.meta │ │ │ ├── nodo_auto.png │ │ │ ├── nodo_auto.png.meta │ │ │ ├── nodo_control.png │ │ │ ├── nodo_control.png.meta │ │ │ ├── nodo_control_free.png │ │ │ ├── nodo_control_free.png.meta │ │ │ ├── rect.png │ │ │ └── rect.png.meta │ │ ├── SplinePath2D.cs │ │ ├── SplinePath2D.cs.meta │ │ ├── SplinePrinter.cs │ │ └── SplinePrinter.cs.meta │ ├── EasySplinePath2DPlus.meta │ ├── EasySplinePath2DPlus │ ├── Captures~ │ │ └── EasySplinePath2DPlus.gif │ ├── Demo.meta │ ├── Demo │ │ ├── DemoScene.unity │ │ ├── DemoScene.unity.meta │ │ ├── EasyRoadPlus.cs │ │ ├── EasyRoadPlus.cs.meta │ │ ├── Editor.meta │ │ ├── Editor │ │ │ ├── EasyRoadPlusEditor.cs │ │ │ └── EasyRoadPlusEditor.cs.meta │ │ ├── FollowPathPlus.cs │ │ └── FollowPathPlus.cs.meta │ ├── Scripts.meta │ └── Scripts │ │ ├── EasySplinePath2DPlus.cs │ │ ├── EasySplinePath2DPlus.cs.meta │ │ ├── Editor.meta │ │ └── Editor │ │ ├── EasySplinePath2DPlusEditor.cs │ │ ├── EasySplinePath2DPlusEditor.cs.meta │ │ ├── Resources.meta │ │ └── Resources │ │ ├── EasySplinePath2D.meta │ │ └── EasySplinePath2D │ │ ├── add.png │ │ ├── add.png.meta │ │ ├── boton_recto.png │ │ ├── boton_recto.png.meta │ │ ├── boton_recto_u.png │ │ ├── boton_recto_u.png.meta │ │ ├── control.png │ │ ├── control.png.meta │ │ ├── curve.png │ │ ├── curve.png.meta │ │ ├── mode_auto.png │ │ ├── mode_auto.png.meta │ │ ├── mode_auto_u.png │ │ ├── mode_auto_u.png.meta │ │ ├── mode_free.png │ │ ├── mode_free.png.meta │ │ ├── mode_free_u.png │ │ ├── mode_free_u.png.meta │ │ ├── mode_lock.png │ │ ├── mode_lock.png.meta │ │ ├── mode_lock_u.png │ │ ├── mode_lock_u.png.meta │ │ ├── node.png │ │ ├── node.png.meta │ │ ├── node_delete.png │ │ ├── node_delete.png.meta │ │ ├── node_selected.png │ │ ├── node_selected.png.meta │ │ ├── nodo_auto.png │ │ ├── nodo_auto.png.meta │ │ ├── nodo_control.png │ │ ├── nodo_control.png.meta │ │ ├── nodo_control_free.png │ │ ├── nodo_control_free.png.meta │ │ ├── rect.png │ │ └── rect.png.meta │ ├── ImageCropping.meta │ ├── ImageCropping │ ├── Captures~ │ │ └── ImageCropping.gif │ ├── Documentation.meta │ ├── Documentation │ │ ├── ImageCropping.md │ │ └── ImageCropping.md.meta │ ├── Editor.meta │ ├── Editor │ │ ├── ImageCropping - Unlit.shader │ │ ├── ImageCropping - Unlit.shader.meta │ │ ├── ImageCropping.cs │ │ ├── ImageCropping.cs.meta │ │ ├── PopupContent.cs │ │ ├── PopupContent.cs.meta │ │ ├── WYTools.ImageCropping.Editor.asmdef │ │ └── WYTools.ImageCropping.Editor.asmdef.meta │ ├── README.md │ ├── README.md.meta │ ├── package.json │ └── package.json.meta │ ├── ReferenceReplace.meta │ ├── ReferenceReplace │ ├── Captures~ │ │ ├── AssetsDeepCloner.gif │ │ └── ReferenceReplace.gif │ ├── Documentation.meta │ ├── Documentation │ │ ├── AssetsDeepCloner.md │ │ ├── AssetsDeepCloner.md.meta │ │ ├── ReferenceReplace.md │ │ └── ReferenceReplace.md.meta │ ├── Editor.meta │ ├── Editor │ │ ├── AssetsDeepCloner.cs │ │ ├── AssetsDeepCloner.cs.meta │ │ ├── ReferenceReplace.cs │ │ ├── ReferenceReplace.cs.meta │ │ ├── Utility.cs │ │ ├── Utility.cs.meta │ │ ├── WYTools.ReferenceReplace.Editor.asmdef │ │ └── WYTools.ReferenceReplace.Editor.asmdef.meta │ ├── README.md │ ├── README.md.meta │ ├── package.json │ └── package.json.meta │ ├── SpriteAtlasInspector.meta │ ├── SpriteAtlasInspector │ ├── Captures~ │ │ └── SpriteAtlasInspector.png │ ├── Editor.meta │ ├── Editor │ │ ├── SpriteAtlasImporterInspector.cs │ │ ├── SpriteAtlasImporterInspector.cs.meta │ │ ├── SpriteAtlasInspector.cs │ │ ├── SpriteAtlasInspector.cs.meta │ │ ├── WYTools.SpriteAtlasInspector.Editor.asmdef │ │ └── WYTools.SpriteAtlasInspector.Editor.asmdef.meta │ ├── README.md │ ├── README.md.meta │ ├── package.json │ └── package.json.meta │ ├── TransformInspector.meta │ ├── TransformInspector │ ├── Captures~ │ │ ├── RectTransformInspector.gif │ │ └── TransformInspector.gif │ ├── Editor.meta │ ├── Editor │ │ ├── RectTransformInspector.cs │ │ ├── RectTransformInspector.cs.meta │ │ ├── TransformInspector.cs │ │ ├── TransformInspector.cs.meta │ │ ├── WYTools.TransformInspector.Editor.asmdef │ │ └── WYTools.TransformInspector.Editor.asmdef.meta │ ├── README.md │ ├── README.md.meta │ ├── package.json │ └── package.json.meta │ ├── TransformSearch.meta │ ├── TransformSearch │ ├── Captures~ │ │ ├── SearchComponent.gif │ │ └── SearchReferenceInScene.gif │ ├── Documentation.meta │ ├── Documentation │ │ ├── TransformSearch.md │ │ └── TransformSearch.md.meta │ ├── Editor.meta │ ├── Editor │ │ ├── BaseSearch.cs │ │ ├── BaseSearch.cs.meta │ │ ├── SearchComponent.cs │ │ ├── SearchComponent.cs.meta │ │ ├── SearchLayer.cs │ │ ├── SearchLayer.cs.meta │ │ ├── SearchReferenceInScene.cs │ │ ├── SearchReferenceInScene.cs.meta │ │ ├── SearchReferenceInSceneBySO.cs │ │ └── SearchReferenceInSceneBySO.cs.meta │ ├── README.md │ ├── README.md.meta │ ├── Samples~ │ │ └── ExtensionForLuaBehaviour │ │ │ ├── .sample.json │ │ │ └── Editor │ │ │ ├── SearchLuaBehaviour.cs │ │ │ └── SearchLuaBehaviour.cs.meta │ ├── WYTools.TransformSearch.Editor.asmdef │ ├── WYTools.TransformSearch.Editor.asmdef.meta │ ├── package.json │ └── package.json.meta │ ├── UGUIExt.meta │ ├── UGUIExt │ ├── README.md │ ├── README.md.meta │ ├── Runtime.meta │ ├── Runtime │ │ ├── ContentSizeFitterExt.cs │ │ ├── ContentSizeFitterExt.cs.meta │ │ ├── ImageAnimation.cs │ │ ├── ImageAnimation.cs.meta │ │ ├── OutlineMellow.cs │ │ ├── OutlineMellow.cs.meta │ │ ├── RawImageAnimation.cs │ │ ├── RawImageAnimation.cs.meta │ │ ├── TemplateText.cs │ │ ├── TemplateText.cs.meta │ │ ├── TemplateTextBase.cs │ │ ├── TemplateTextBase.cs.meta │ │ ├── TemplateText_TMP.cs │ │ ├── TemplateText_TMP.cs.meta │ │ ├── WYTools.UGUIExt.asmdef │ │ └── WYTools.UGUIExt.asmdef.meta │ ├── package.json │ └── package.json.meta │ ├── UITools.meta │ └── UITools │ ├── Captures~ │ ├── UITools.png │ ├── UIToolsIn2019.png │ └── UIToolsIn2021.png │ ├── Editor.meta │ ├── Editor │ ├── Res.meta │ ├── Res │ │ ├── align_bottom.png │ │ ├── align_bottom.png.meta │ │ ├── align_center.png │ │ ├── align_center.png.meta │ │ ├── align_left.png │ │ ├── align_left.png.meta │ │ ├── align_middle.png │ │ ├── align_middle.png.meta │ │ ├── align_right.png │ │ ├── align_right.png.meta │ │ ├── align_top.png │ │ ├── align_top.png.meta │ │ ├── average_gap_h.png │ │ ├── average_gap_h.png.meta │ │ ├── average_gap_v.png │ │ ├── average_gap_v.png.meta │ │ ├── fit_height.png │ │ ├── fit_height.png.meta │ │ ├── fit_width.png │ │ ├── fit_width.png.meta │ │ ├── group_pack.png │ │ ├── group_pack.png.meta │ │ ├── group_unpack.png │ │ ├── group_unpack.png.meta │ │ ├── reserved1.png │ │ ├── reserved1.png.meta │ │ ├── reserved2.png │ │ ├── reserved2.png.meta │ │ ├── reserved3.png │ │ ├── reserved3.png.meta │ │ ├── reserved4.png │ │ ├── reserved4.png.meta │ │ ├── reserved5.png │ │ ├── reserved5.png.meta │ │ ├── reserved6.png │ │ ├── reserved6.png.meta │ │ ├── reserved7.png │ │ ├── reserved7.png.meta │ │ ├── reserved8.png │ │ ├── reserved8.png.meta │ │ ├── same_height.png │ │ ├── same_height.png.meta │ │ ├── same_width.png │ │ └── same_width.png.meta │ ├── UITools.cs │ ├── UITools.cs.meta │ ├── Utility.cs │ ├── Utility.cs.meta │ ├── WYTools.UITools.Editor.asmdef │ └── WYTools.UITools.Editor.asmdef.meta │ ├── README.md │ ├── README.md.meta │ ├── package.json │ └── package.json.meta ├── Captures~ └── UPMSupport.png ├── LICENSE.txt ├── Packages └── manifest.json ├── ProjectSettings ├── AudioManager.asset ├── AutoStreamingSettings.asset ├── ClusterInputManager.asset ├── DynamicsManager.asset ├── EditorBuildSettings.asset ├── EditorSettings.asset ├── GraphicsSettings.asset ├── InputManager.asset ├── MemorySettings.asset ├── NavMeshAreas.asset ├── PackageManagerSettings.asset ├── Packages │ └── com.unity.testtools.codecoverage │ │ └── Settings.json ├── Physics2DSettings.asset ├── PresetManager.asset ├── ProjectSettings.asset ├── ProjectVersion.txt ├── QualitySettings.asset ├── TagManager.asset ├── TimeManager.asset ├── UnityConnectSettings.asset ├── VFXManager.asset ├── VersionControlSettings.asset ├── XRSettings.asset └── boot.config └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | [Ll]ibrary/ 2 | [Tt]emp/ 3 | [Oo]bj/ 4 | [Bb]uild/ 5 | [Bb]uilds/ 6 | [Ll]ogs/ 7 | [Uu]serSettings/ 8 | [Aa]ssets/AssetStoreTools* 9 | 10 | # Visual Studio cache directory 11 | .vs/ 12 | 13 | # Visual Studio Code cache directory 14 | .vscode/ 15 | 16 | .VSCodeCounter/ 17 | 18 | # Jet Brains cache directory 19 | .idea/ 20 | 21 | # Autogenerated VS/MD/Consulo solution and project files 22 | ExportedObj/ 23 | .consulo/ 24 | *.csproj 25 | *.unityproj 26 | *.sln 27 | *.suo 28 | *.tmp 29 | *.user 30 | *.userprefs 31 | *.pidb 32 | *.booproj 33 | *.svd 34 | *.pdb 35 | *.opendb 36 | *.DotSettings 37 | *.iml 38 | 39 | # Unity3D generated meta files 40 | *.pidb.meta 41 | *.pdb.meta 42 | 43 | # Unity3D Generated File On Crash Reports 44 | sysinfo.txt 45 | 46 | # Builds 47 | *.apk 48 | 49 | # -------------------------- -------------------------------------------------------------------------------- /Assets/Tools.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f0c29d71622eeb74287e314bb04fd7f8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 24585df533a4aec4b9ba8fa1aeb822e2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Captures~/AudioClipper.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/AudioFactory/Captures~/AudioClipper.gif -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Captures~/AudioVolumeUnify.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/AudioFactory/Captures~/AudioVolumeUnify.jpg -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Documentation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 52e30dc04f8b44e38f50fe37d0feaf33 3 | timeCreated: 1719846424 -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Documentation/AudioFactory.md: -------------------------------------------------------------------------------- 1 | ## AudioClipper 2 | * 拖动左「边界线」可调整开始时间,拖动右「边界线」可调整结束时间。 3 | * 拖动中间「高亮区域」可整体调整选中时间段。 4 | * 拖动时按住「Ctrl键」可屏蔽吸附效果。 5 | * 滚动鼠标「滚轮」可缩放波形图。 6 | * 调整后的音量可保存至文件。 7 | 8 | ## AudioVolumeUnify 9 | * 点击「基准」按钮,将该音频设置为统一音量。 10 | * 点击「试听」按钮,以统一音量试听该音频。 11 | * 输出音频文件格式与原音频文件格式相同。 12 | * Mp3格式由于编码原因,每次写入音量会发生细微变化,并且首尾会多出零点零几秒的空白。 -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Documentation/AudioFactory.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c632d95b03304bc4b37a2ff165e8f3c3 3 | timeCreated: 1719853636 -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: db77e25d9e0ed8e44adad1e0bba254af 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/AudioClipWriter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7115bc67a0384d1ea1464db232107916 3 | timeCreated: 1719033589 -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/AudioClipper.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 84d1933b5db24c28b6916cfc11232f8d 3 | timeCreated: 1718956942 -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/AudioVolumeUnify.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6506ddeb81e4457a9687674e55e8c656 3 | timeCreated: 1719670869 -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3c50e02b0bbd99240bcdd496b6af62c4 3 | folderAsset: yes 4 | timeCreated: 1493112996 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/LibMp3Lame.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d66ded0e78d16b9488dfb0e9247211e7 3 | timeCreated: 1493208137 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/MP3FileWriter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fb5c882d3dd15214491ac8aaf1f5b608 3 | timeCreated: 1493208137 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 23b199320e3e7df47a5ebee61346c2b0 3 | folderAsset: yes 4 | timeCreated: 1493208131 5 | licenseType: Pro 6 | DefaultImporter: 7 | userData: 8 | assetBundleName: 9 | assetBundleVariant: 10 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/AdpcmWaveFormat.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 60f6eb670e8f81f4382cc6d1e8ac13fa 3 | timeCreated: 1493208131 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/AudioMediaSubtypes.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0ee08990d14d50946a1ad3ad9c69e4d3 3 | timeCreated: 1493208131 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/Gsm610WaveFormat.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Runtime.InteropServices; 5 | using System.IO; 6 | 7 | namespace NAudio.Wave.WZT 8 | { 9 | /// 10 | /// GSM 610 11 | /// 12 | [StructLayout(LayoutKind.Sequential, Pack = 2)] 13 | public class Gsm610WaveFormat : WaveFormat 14 | { 15 | private short samplesPerBlock; 16 | 17 | /// 18 | /// Creates a GSM 610 WaveFormat 19 | /// For now hardcoded to 13kbps 20 | /// 21 | public Gsm610WaveFormat() 22 | { 23 | this.waveFormatTag = WaveFormatEncoding.Gsm610; 24 | this.channels = 1; 25 | this.averageBytesPerSecond = 1625; 26 | this.bitsPerSample = 0; // must be zero 27 | this.blockAlign = 65; 28 | this.sampleRate = 8000; 29 | 30 | this.extraSize = 2; 31 | this.samplesPerBlock = 320; 32 | } 33 | 34 | /// 35 | /// Samples per block 36 | /// 37 | public short SamplesPerBlock { get { return this.samplesPerBlock; } } 38 | 39 | /// 40 | /// Writes this structure to a BinaryWriter 41 | /// 42 | public override void Serialize(BinaryWriter writer) 43 | { 44 | base.Serialize(writer); 45 | writer.Write(samplesPerBlock); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/Gsm610WaveFormat.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c029ee315c0c6834e90f04f619338b3b 3 | timeCreated: 1493208131 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/IWaveProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using NAudio.Lame; 3 | 4 | namespace NAudio.Wave.WZT 5 | { 6 | /// 7 | /// Generic interface for all WaveProviders. 8 | /// 9 | public interface IWaveProvider 10 | { 11 | /// 12 | /// Gets the WaveFormat of this WaveProvider. 13 | /// 14 | /// The wave format. 15 | WaveFormat WaveFormat { get; } 16 | 17 | /// 18 | /// Fill the specified buffer with wave data. 19 | /// 20 | /// The buffer to fill of wave data. 21 | /// Offset into buffer 22 | /// The number of bytes to read 23 | /// the number of bytes written to the buffer. 24 | int Read(byte[] buffer, int offset, int count); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/IWaveProvider.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fbfb88f187675b0448dcf66ca372dc8f 3 | timeCreated: 1493208131 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/RiffChunk.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | 5 | namespace NAudio.Wave.WZT 6 | { 7 | /// 8 | /// Holds information about a RIFF file chunk 9 | /// 10 | public class RiffChunk 11 | { 12 | int identifier; 13 | int length; 14 | long streamPosition; 15 | 16 | /// 17 | /// Creates a RiffChunk object 18 | /// 19 | public RiffChunk(int identifier, int length, long streamPosition) 20 | { 21 | this.identifier = identifier; 22 | this.length = length; 23 | this.streamPosition = streamPosition; 24 | } 25 | 26 | /// 27 | /// The chunk identifier 28 | /// 29 | public int Identifier 30 | { 31 | get 32 | { 33 | return identifier; 34 | } 35 | } 36 | 37 | /// 38 | /// The chunk identifier converted to a string 39 | /// 40 | public string IdentifierAsString 41 | { 42 | get 43 | { 44 | return ASCIIEncoding.ASCII.GetString(BitConverter.GetBytes(identifier)); 45 | } 46 | } 47 | 48 | /// 49 | /// The chunk length 50 | /// 51 | public int Length 52 | { 53 | get 54 | { 55 | return length; 56 | } 57 | } 58 | 59 | /// 60 | /// The stream position this chunk is located at 61 | /// 62 | public long StreamPosition 63 | { 64 | get 65 | { 66 | return streamPosition; 67 | } 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/RiffChunk.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe306abf31fdbe64481deb697a77ba52 3 | timeCreated: 1493208131 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/WaveFileReader.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b8920394775cdb6438bd7656c5c68841 3 | timeCreated: 1493208131 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/WaveFormat.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f709c5c91c6ee1347bbdbfb71e25563d 3 | timeCreated: 1493208131 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/WaveFormatEncoding.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 07c489cad6787a04eadcc0f7b39dfc3e 3 | timeCreated: 1493208131 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/WaveFormatExtensible.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Runtime.InteropServices; 5 | using NAudio.Dmo.WZT; 6 | 7 | namespace NAudio.Wave.WZT 8 | { 9 | /// 10 | /// WaveFormatExtensible 11 | /// http://www.microsoft.com/whdc/device/audio/multichaud.mspx 12 | /// 13 | [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 2)] 14 | public class WaveFormatExtensible : WaveFormat 15 | { 16 | short wValidBitsPerSample; // bits of precision, or is wSamplesPerBlock if wBitsPerSample==0 17 | int dwChannelMask; // which channels are present in stream 18 | Guid subFormat; 19 | 20 | /// 21 | /// Parameterless constructor for marshalling 22 | /// 23 | WaveFormatExtensible() 24 | { 25 | } 26 | 27 | /// 28 | /// Creates a new WaveFormatExtensible for PCM or IEEE 29 | /// 30 | public WaveFormatExtensible(int rate, int bits, int channels) 31 | : base(rate, bits, channels) 32 | { 33 | waveFormatTag = WaveFormatEncoding.Extensible; 34 | extraSize = 22; 35 | wValidBitsPerSample = (short) bits; 36 | for (int n = 0; n < channels; n++) 37 | { 38 | dwChannelMask |= (1 << n); 39 | } 40 | if (bits == 32) 41 | { 42 | // KSDATAFORMAT_SUBTYPE_IEEE_FLOAT 43 | subFormat = AudioMediaSubtypes.MEDIASUBTYPE_IEEE_FLOAT; // new Guid("00000003-0000-0010-8000-00aa00389b71"); 44 | } 45 | else 46 | { 47 | // KSDATAFORMAT_SUBTYPE_PCM 48 | subFormat = AudioMediaSubtypes.MEDIASUBTYPE_PCM; // new Guid("00000001-0000-0010-8000-00aa00389b71"); 49 | } 50 | 51 | } 52 | 53 | /// 54 | /// SubFormat (may be one of AudioMediaSubtypes) 55 | /// 56 | public Guid SubFormat { get { return subFormat; } } 57 | 58 | /// 59 | /// Serialize 60 | /// 61 | /// 62 | public override void Serialize(System.IO.BinaryWriter writer) 63 | { 64 | base.Serialize(writer); 65 | writer.Write(wValidBitsPerSample); 66 | writer.Write(dwChannelMask); 67 | byte[] guid = subFormat.ToByteArray(); 68 | writer.Write(guid, 0, guid.Length); 69 | } 70 | 71 | /// 72 | /// String representation 73 | /// 74 | public override string ToString() 75 | { 76 | return String.Format("{0} wBitsPerSample:{1} dwChannelMask:{2} subFormat:{3} extraSize:{4}", 77 | base.ToString(), 78 | wValidBitsPerSample, 79 | dwChannelMask, 80 | subFormat, 81 | extraSize); 82 | } 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/WaveFormatExtensible.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5d0e3542e85464541a0022c04d0da8b6 3 | timeCreated: 1493208131 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/WaveFormatExtraData.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Text; 4 | using System.Runtime.InteropServices; 5 | using System.IO; 6 | 7 | namespace NAudio.Wave.WZT 8 | { 9 | /// 10 | /// This class used for marshalling from unmanaged code 11 | /// 12 | [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 2)] 13 | public class WaveFormatExtraData : WaveFormat 14 | { 15 | // try with 100 bytes for now, increase if necessary 16 | [MarshalAs(UnmanagedType.ByValArray, SizeConst = 100)] 17 | private byte[] extraData = new byte[100]; 18 | 19 | /// 20 | /// Allows the extra data to be read 21 | /// 22 | public byte[] ExtraData { get { return extraData; } } 23 | 24 | /// 25 | /// parameterless constructor for marshalling 26 | /// 27 | internal WaveFormatExtraData() 28 | { 29 | } 30 | 31 | /// 32 | /// Reads this structure from a BinaryReader 33 | /// 34 | public WaveFormatExtraData(BinaryReader reader) 35 | : base(reader) 36 | { 37 | ReadExtraData(reader); 38 | } 39 | 40 | internal void ReadExtraData(BinaryReader reader) 41 | { 42 | if (this.extraSize > 0) 43 | { 44 | reader.Read(extraData, 0, extraSize); 45 | } 46 | } 47 | 48 | /// 49 | /// Writes this structure to a BinaryWriter 50 | /// 51 | public override void Serialize(BinaryWriter writer) 52 | { 53 | base.Serialize(writer); 54 | if (extraSize > 0) 55 | { 56 | writer.Write(extraData, 0, extraSize); 57 | } 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/WaveFormatExtraData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fad90a98c9bb79f4e86bf7f8e56d85b9 3 | timeCreated: 1493208131 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/Lame/NAudio/WaveStream.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1e3938bcd2820f546a28486ea4b7ba5d 3 | timeCreated: 1493208131 4 | licenseType: Pro 5 | MonoImporter: 6 | serializedVersion: 2 7 | defaultReferences: [] 8 | executionOrder: 0 9 | icon: {instanceID: 0} 10 | userData: 11 | assetBundleName: 12 | assetBundleVariant: 13 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/PopupContent.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wangyun 3 | * @CreateTime: 2024-08-08 21:44:43 731 4 | * @LastEditor: wangyun 5 | * @EditTime: 2024-08-08 21:44:43 735 6 | */ 7 | 8 | using System; 9 | using UnityEditor; 10 | using UnityEngine; 11 | 12 | namespace WYTools.AudioFactory { 13 | public class PopupContent : PopupWindowContent { 14 | public float Width { get; } 15 | public float Height { get; } 16 | public Action OnGUIAction { get; } 17 | public Action OnOpenAction { get; set; } 18 | public Action OnCloseAction { get; set; } 19 | 20 | public PopupContent(float width, float height, Action onGUIAction) { 21 | Width = width; 22 | Height = height; 23 | OnGUIAction = onGUIAction; 24 | } 25 | 26 | public override Vector2 GetWindowSize() => new Vector2(Width, Height); 27 | 28 | public override void OnGUI(Rect rect) => OnGUIAction?.Invoke(rect); 29 | 30 | public override void OnOpen() => OnOpenAction?.Invoke(); 31 | 32 | public override void OnClose() => OnCloseAction?.Invoke(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/PopupContent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe6cc800b9fe40eba38877aa69c54e76 3 | timeCreated: 1723381810 -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94a532e936b434bbe853ffa15a046c91 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Impl.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 22e9fa4365f17a149a980b4997eaee40 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Impl/VorbisPluginImpl.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "VorbisPluginImpl", 3 | "rootNamespace": "OggVorbis", 4 | "references": [], 5 | "includePlatforms": [], 6 | "excludePlatforms": [], 7 | "allowUnsafeCode": false, 8 | "overrideReferences": true, 9 | "precompiledReferences": [], 10 | "autoReferenced": true, 11 | "defineConstraints": [], 12 | "versionDefines": [], 13 | "noEngineReferences": false 14 | } -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Impl/VorbisPluginImpl.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6369f65a3f137eb448c3456fdbf498ff 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Impl/src.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce6e87ce76d38cf499f4721cfcff2012 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Impl/src/NativeBridge.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7a62e42f4d5890e429df61d6f0af2e0d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Impl/src/NativeErrorCode.cs: -------------------------------------------------------------------------------- 1 | namespace OggVorbis 2 | { 3 | public enum NativeErrorCode 4 | { 5 | ERROR_INVALID_FILEPATH_PARAMETER = -1, 6 | ERROR_CANNOT_OPEN_FILE_FOR_WRITE = -2, 7 | ERROR_CANNOT_OPEN_FILE_FOR_READ = -3, 8 | ERROR_INPUT_FILESTREAM_IS_NOT_OGG_STREAM = -4, 9 | ERROR_READING_OGG_STREAM = -5, 10 | 11 | ERROR_INVALID_SAMPLES_PARAMETER = -10, 12 | ERROR_INVALID_SAMPLESLENGTH_PARAMETER = -11, 13 | ERROR_INVALID_CHANNELS_PARAMETER = -12, 14 | ERROR_INVALID_FREQUENCY_PARAMETER = -13, 15 | ERROR_INVALID_BASE_QUALITY_PARAMETER = -14, 16 | ERROR_MALLOC_RETURNED_NULL = -15, 17 | ERROR_BYTES_MEMORY_ARRAY_NULL = -16, 18 | ERROR_INVALID_WRITE_CALLBACK_PARAMETER = -17, 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Impl/src/NativeErrorCode.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a0842d9e22713d5498e69792dfc7dd7c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Impl/src/NativeErrorException.cs: -------------------------------------------------------------------------------- 1 | namespace OggVorbis 2 | { 3 | public class NativeErrorException : System.Exception 4 | { 5 | public NativeErrorCode NativeErrorCode { get; } 6 | 7 | private NativeErrorException(NativeErrorCode nativeErrorCode) 8 | : base($"Error code: {nativeErrorCode}") 9 | { 10 | NativeErrorCode = nativeErrorCode; 11 | } 12 | 13 | public override string ToString() 14 | { 15 | return $"{nameof(NativeErrorException)} {Message}"; 16 | } 17 | 18 | internal static void ThrowExceptionIfNecessary(int returnValue) 19 | { 20 | if (returnValue == 0) 21 | { 22 | return; 23 | } 24 | throw new NativeErrorException((NativeErrorCode)returnValue); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Impl/src/NativeErrorException.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 43b9e4fd60d7b1b42babf0b567adc798 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Impl/src/VorbisPlugin.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 02000528ede72eb4e9fa9627185e0ac6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4432b532ac5884e10af081654d1e89f7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/OSX.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b17ebb086ab3a40e38b962354571591c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/OSX/libVorbisPlugin.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/OSX/libVorbisPlugin.dylib -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/OSX/libVorbisPlugin.dylib.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3dd18ede30e7e4dcbaae02cd851ffd1c 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | : Any 16 | second: 17 | enabled: 0 18 | settings: 19 | Exclude Android: 1 20 | Exclude Editor: 0 21 | Exclude Linux64: 1 22 | Exclude OSXUniversal: 0 23 | Exclude Win: 1 24 | Exclude Win64: 1 25 | Exclude iOS: 1 26 | - first: 27 | Android: Android 28 | second: 29 | enabled: 0 30 | settings: 31 | CPU: ARMv7 32 | - first: 33 | Any: 34 | second: 35 | enabled: 0 36 | settings: {} 37 | - first: 38 | Editor: Editor 39 | second: 40 | enabled: 1 41 | settings: 42 | CPU: AnyCPU 43 | DefaultValueInitialized: true 44 | OS: OSX 45 | - first: 46 | Standalone: Linux64 47 | second: 48 | enabled: 0 49 | settings: 50 | CPU: None 51 | - first: 52 | Standalone: OSXUniversal 53 | second: 54 | enabled: 1 55 | settings: 56 | CPU: AnyCPU 57 | - first: 58 | Standalone: Win 59 | second: 60 | enabled: 0 61 | settings: 62 | CPU: x86 63 | - first: 64 | Standalone: Win64 65 | second: 66 | enabled: 0 67 | settings: 68 | CPU: x86_64 69 | - first: 70 | iPhone: iOS 71 | second: 72 | enabled: 0 73 | settings: 74 | AddToEmbeddedBinaries: false 75 | CPU: AnyCPU 76 | CompileFlags: 77 | FrameworkDependencies: 78 | userData: 79 | assetBundleName: 80 | assetBundleVariant: 81 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/Windows.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7f766c141793afa4cb9995b7ec9dad90 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/Windows/x86.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 945159874f3e2da4c87b384d5ce9f88a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/Windows/x86/VorbisPlugin.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/Windows/x86/VorbisPlugin.dll -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/Windows/x86/VorbisPlugin.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c604fbaeb4366014db10d1915bf4533d 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | : Any 16 | second: 17 | enabled: 0 18 | settings: 19 | Exclude Android: 1 20 | Exclude Editor: 0 21 | Exclude Linux64: 0 22 | Exclude OSXUniversal: 0 23 | Exclude Win: 0 24 | Exclude Win64: 0 25 | - first: 26 | Android: Android 27 | second: 28 | enabled: 0 29 | settings: 30 | CPU: ARMv7 31 | - first: 32 | Any: 33 | second: 34 | enabled: 0 35 | settings: {} 36 | - first: 37 | Editor: Editor 38 | second: 39 | enabled: 1 40 | settings: 41 | CPU: x86 42 | DefaultValueInitialized: true 43 | OS: Windows 44 | - first: 45 | Facebook: Win 46 | second: 47 | enabled: 0 48 | settings: 49 | CPU: AnyCPU 50 | - first: 51 | Facebook: Win64 52 | second: 53 | enabled: 0 54 | settings: 55 | CPU: None 56 | - first: 57 | Standalone: Linux64 58 | second: 59 | enabled: 1 60 | settings: 61 | CPU: AnyCPU 62 | - first: 63 | Standalone: OSXUniversal 64 | second: 65 | enabled: 1 66 | settings: 67 | CPU: AnyCPU 68 | - first: 69 | Standalone: Win 70 | second: 71 | enabled: 1 72 | settings: 73 | CPU: AnyCPU 74 | - first: 75 | Standalone: Win64 76 | second: 77 | enabled: 1 78 | settings: 79 | CPU: None 80 | userData: 81 | assetBundleName: 82 | assetBundleVariant: 83 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/Windows/x86_64.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a9188e20df95d204a82ed104bc95e446 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/Windows/x86_64/VorbisPlugin.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/Windows/x86_64/VorbisPlugin.dll -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/VorbisPlugin/Plugins/Windows/x86_64/VorbisPlugin.dll.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8366486b20439f44ca3c6f11acb29fee 3 | PluginImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | iconMap: {} 7 | executionOrder: {} 8 | defineConstraints: [] 9 | isPreloaded: 0 10 | isOverridable: 0 11 | isExplicitlyReferenced: 0 12 | validateReferences: 1 13 | platformData: 14 | - first: 15 | : Any 16 | second: 17 | enabled: 0 18 | settings: 19 | Exclude Android: 1 20 | Exclude Editor: 0 21 | Exclude Linux64: 0 22 | Exclude OSXUniversal: 0 23 | Exclude Win: 1 24 | Exclude Win64: 0 25 | - first: 26 | Android: Android 27 | second: 28 | enabled: 0 29 | settings: 30 | CPU: ARMv7 31 | - first: 32 | Any: 33 | second: 34 | enabled: 0 35 | settings: {} 36 | - first: 37 | Editor: Editor 38 | second: 39 | enabled: 1 40 | settings: 41 | CPU: x86_64 42 | DefaultValueInitialized: true 43 | OS: Windows 44 | - first: 45 | Facebook: Win 46 | second: 47 | enabled: 0 48 | settings: 49 | CPU: None 50 | - first: 51 | Facebook: Win64 52 | second: 53 | enabled: 0 54 | settings: 55 | CPU: AnyCPU 56 | - first: 57 | Standalone: Linux64 58 | second: 59 | enabled: 1 60 | settings: 61 | CPU: AnyCPU 62 | - first: 63 | Standalone: OSXUniversal 64 | second: 65 | enabled: 1 66 | settings: 67 | CPU: AnyCPU 68 | - first: 69 | Standalone: Win 70 | second: 71 | enabled: 0 72 | settings: 73 | CPU: None 74 | - first: 75 | Standalone: Win64 76 | second: 77 | enabled: 1 78 | settings: 79 | CPU: AnyCPU 80 | userData: 81 | assetBundleName: 82 | assetBundleVariant: 83 | -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/WYTools.AudioFactory.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WYTools.AudioFactory.Editor", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:6369f65a3f137eb448c3456fdbf498ff" 6 | ], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [], 17 | "noEngineReferences": false 18 | } -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/Editor/WYTools.AudioFactory.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 82acddd0ce444a6eadc4c16bf06e88a2 3 | timeCreated: 1719846673 -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/README.md: -------------------------------------------------------------------------------- 1 | ## AudioClipper 2 | 3 | 支持展示AudioClip对象的波形图,从中截取片段,试听并保存为WAV、MP3、OGG文件。 4 | ![AudioClipper](Captures~/AudioClipper.gif) 5 | * 展示带标尺的波形图。 6 | * 可在波形图中选中截取区域,并支持拖动区域。 7 | * 可根据阈值裁剪收尾空白。 8 | * 可试听截取的片段。 9 | * 可缩放音量,并在波形图中展示出来。 10 | * 可保存片段到WAV、MP3、OGG等音频文件。 11 | 12 | ## AudioVolumeUnify 13 | 14 | 本工具用于将多个音频统一音量,支持WAV、MP3、OGG三种格式。 15 | ![AudioVolumeUnify](Captures~/AudioVolumeUnify.jpg) 16 | * 可选择某个音频的音量作为统一音量,也可以自己设置统一音量。 17 | * 支持以统一音量试音每个音频。 18 | * 输出文件与源文件格式相同,也可以直接覆盖源文件。 19 | 20 | ## 第三方内容 21 | 22 | Editor/Lame:[Lame-For-Unity](https://github.com/3wz/Lame-For-Unity) 23 | 取自 [Assets/Lame](https://github.com/3wz/Lame-For-Unity/tree/master/Assets/Lame) ,有所删减。 24 | 25 | Editor/VorbisPlugin:[unity-project-vorbis](https://github.com/gindemit/unity-project-vorbis) 26 | 取自 [Assets/VorbisPlugin](https://github.com/gindemit/unity-project-vorbis/tree/master/UnityClient/Assets/VorbisPlugin) 。 -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 19974e7926ee413491a7b409126ce1a6 3 | timeCreated: 1719846455 -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.wy.tools.audio-factory", 3 | "displayName": "WYTools.AudioFactory", 4 | "version": "0.1.2", 5 | "description": "AudioClipper:\n展示AudioClip对象的波形图,从中截取片段,试听并保存为WAV、MP3、OGG文件。\nAudioVolumeUnify:\n将多个音频统一音量,保存为WAV、MP3、OGG文件。" 6 | 7 | } -------------------------------------------------------------------------------- /Assets/Tools/AudioFactory/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fe6cdc9f93d0a90498f475fdf4b2c5a0 3 | PackageManifestImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/BatchRename.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 32814ed82cefee04dbe24fe7f9b8157f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/Captures~/BatchRename.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/BatchRename/Captures~/BatchRename.gif -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/Documentation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d6897c4ab8a2ac4d9262813024a77eb 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/Documentation/BatchRename.md: -------------------------------------------------------------------------------- 1 | ## 整体 2 | * 在「命名规则」输入框中输入命名特征。 3 | * 未开启「正则表达式」选项时,使用 * 插入原始名称。 4 | * 开启「正则表达式」选项时,通过 /pattern/ 从原始名称中获取到匹配结果,如 /.*/_Clone 表示原始名称后面加上“_Clone” 5 | * 使用 # 插入数字编号。 6 | * 可设置数字编号的起始编号、每个文件递增多少,编号位数(不足补0)。 7 | * 重复点击「推测命名」按钮,将遍历所有选中对象的名称,依次显示每个选中对象去除编号后的名称。 8 | 9 | ## 替换 10 | * 在「把」输入框中输入原文件名中需要替换的部分。 11 | * 开启「正则表达式」选项时,输入的替换部分被视为正则表达式。 12 | * 在「替换成」输入框中输入替换后的文字,它将与未被替换的部分拼接成新的名称。 13 | * 在「替换成」输入框中使用 # 插入数字编号。 14 | * 可设置数字编号的起始编号、每个文件递增多少,编号位数(不足补0)。 -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/Documentation/BatchRename.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1f95d0a134e3ee44da6a89b0fd0c8589 3 | timeCreated: 1719853636 -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dbb4172c7dabcab42932d4d17e2c165e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/Editor/BatchRename.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 916fd896b7f8445f915a1c78c315d9a6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/Editor/WYTools.BatchRename.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WYTools.BatchRename.Editor", 3 | "rootNamespace": "", 4 | "references": [], 5 | "includePlatforms": [ 6 | "Editor" 7 | ], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [], 14 | "versionDefines": [], 15 | "noEngineReferences": false 16 | } -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/Editor/WYTools.BatchRename.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a39e7691f36ac5c4796f257059553f9c 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/README.md: -------------------------------------------------------------------------------- 1 | ## BatchRename 2 | 3 | 支持重命名GameObject和Asset。 4 | ![BatchRename](Captures~/BatchRename.gif) 5 | * **整体:** 重命名为新的名称。 6 | * **替换:** 将原名中的一部分替换成别的字符串。 7 | * **「正则表达式」复选按钮:** 整体重命名时,用来将与原名匹配到的字符串插入到新名称中,替换重命名时,用来匹配需要替换的内容。 8 | * **起始编号、递增补偿、编号位数:** 多个对象重命名可以用编号替换「#」号,实现名称带序号功能。 9 | * **「推测命名按钮」:** 将原名剔除序号后去重,随着每次点击依次显示在输入框中。 -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ac08d9de446345988117625b44c3c0aa 3 | timeCreated: 1720101393 -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.wy.tools.batch-rename", 3 | "displayName": "WYTools.BatchRename", 4 | "version": "0.1.1", 5 | "description": "批量重命名GameObject和Asset。" 6 | 7 | } -------------------------------------------------------------------------------- /Assets/Tools/BatchRename/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9805da034f3549e4bfcdccb7c3a30745 3 | timeCreated: 1720101475 -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 484db3bfaf5082742b7b8c2b4edaebe8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e6a9b064b0744455898783cc41f717b0 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/DemoScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dccca004fd6484ab0a20be2ea2427bae 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/DynamicPath.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | /// 5 | /// This is an example of the usage of Easy Spline Path 2D. 6 | /// In this example we use the function 'AddSegment' to get dynamically add 7 | /// nodes to the spline. 8 | /// 9 | public class DynamicPath : FollowPath 10 | { 11 | private Vector3 stageDimensions; 12 | private float lenght; 13 | 14 | protected float offset = 1; 15 | 16 | protected override void Start() 17 | { 18 | // Get the stage dimensions so we allways choose a point inside the screen 19 | stageDimensions = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, 0)); 20 | AddPoints(); 21 | base.Start(); 22 | } 23 | 24 | protected override void Move() 25 | { 26 | base.Move(); 27 | GeneratePath(); 28 | } 29 | 30 | virtual protected void GeneratePath() 31 | { 32 | // When approaching the last spline lenght we spawn more nodes 33 | if (dist >= lenght - offset) 34 | { 35 | AddPoints(); 36 | } 37 | } 38 | // Function to dynamically add nodes to the SplinePath2D 39 | private void AddPoints() 40 | { 41 | // Get the current lenght of the spline to check in the Move() method 42 | lenght = spline2D.GetLenght(); 43 | // We add two nodes because the auto node type adapts any adjacent nodes of type Auto when created 44 | AddPoint(); 45 | AddPoint(); 46 | // When we modify the spline we need to call this function to update the values in the EasySplinePath2D script 47 | spline2D.SetUp(); 48 | } 49 | 50 | virtual protected void AddPoint() 51 | { 52 | spline2D.AddSegment(new Vector2(Random.Range(-stageDimensions.x, stageDimensions.x), Random.Range(-stageDimensions.y, stageDimensions.y))); 53 | } 54 | // Override the rotate funtion to add smoothness to the movement 55 | protected override void RotateToAlign(float angle) 56 | { 57 | transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.AngleAxis(angle, Vector3.forward), Time.deltaTime * 3); 58 | } 59 | 60 | } 61 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/DynamicPath.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 71fb4305e3e4b4a33a55772e07e4145d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/EasyRoad.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | /// 6 | /// Example script that uses EasySplinePath2D to generate a mesh that follows 7 | /// the spline. 8 | /// 9 | [RequireComponent(typeof(EasySplinePath2D))] 10 | [RequireComponent(typeof(MeshFilter))] 11 | [RequireComponent(typeof(MeshRenderer))] 12 | public class EasyRoad : MonoBehaviour 13 | { 14 | public float trackWidth = 3; 15 | [Range(.05f, 1.5f)] 16 | public float segmentLenght = 1; 17 | public float tiling = 1; 18 | public bool liveUpdate; 19 | 20 | public void UpdateMesh() 21 | { 22 | SplinePath2D spline = GetComponent().path; 23 | Vector2[] points = spline.GetEquidistancePoints(segmentLenght); 24 | GetComponent().mesh = CreateMesh(points, spline.IsClosed, trackWidth); 25 | int texture = Mathf.RoundToInt(tiling * points.Length * segmentLenght * .05f); 26 | GetComponent().sharedMaterial.mainTextureScale = new Vector2(1, texture); 27 | } 28 | 29 | /// 30 | /// Function to create the mesh of the road, from the points of the curve. 31 | /// 32 | public Mesh CreateMesh(Vector2[] points, bool closed, float roadWidth) 33 | { 34 | Vector3[] vertices = new Vector3[points.Length * 2]; 35 | Vector2[] uvs = new Vector2[vertices.Length]; 36 | int numTris = 2 * (points.Length - 1) + ((closed) ? 2 : 0); 37 | int[] tris = new int[numTris * 3]; 38 | int vertIndex = 0; 39 | int triIndex = 0; 40 | 41 | for (int i = 0; i < points.Length; i++) 42 | { 43 | Vector2 forward = Vector2.zero; 44 | if (i < points.Length - 1 || closed) 45 | { 46 | forward += points[(i + 1) % points.Length] - points[i]; 47 | } 48 | if (i > 0 || closed) 49 | { 50 | forward += points[i] - points[(i - 1 + points.Length) % points.Length]; 51 | } 52 | forward.Normalize(); 53 | Vector2 left = new Vector2(-forward.y, forward.x); 54 | 55 | vertices[vertIndex] = points[i] + left * roadWidth * .5f; 56 | vertices[vertIndex + 1] = points[i] - left * roadWidth * .5f; 57 | 58 | float completionPercent = i / (float)(points.Length - 1); 59 | float v = 1 - Mathf.Abs(2 * completionPercent - 1); 60 | uvs[vertIndex] = new Vector2(0, v); 61 | uvs[vertIndex + 1] = new Vector2(1, v); 62 | 63 | if (i < points.Length - 1 || closed) 64 | { 65 | tris[triIndex] = vertIndex; 66 | tris[triIndex + 1] = (vertIndex + 2) % vertices.Length; 67 | tris[triIndex + 2] = vertIndex + 1; 68 | 69 | tris[triIndex + 3] = vertIndex + 1; 70 | tris[triIndex + 4] = (vertIndex + 2) % vertices.Length; 71 | tris[triIndex + 5] = (vertIndex + 3) % vertices.Length; 72 | } 73 | 74 | vertIndex += 2; 75 | triIndex += 6; 76 | } 77 | 78 | Mesh mesh = new Mesh(); 79 | mesh.vertices = vertices; 80 | mesh.triangles = tris; 81 | mesh.uv = uvs; 82 | 83 | return mesh; 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/EasyRoad.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 55bf9054f04b64fdcb6494b63e3ad0f5 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8451d1a6edead45eba3bd1a3ae2457d8 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Editor/EasyRoadEditor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEditor; 5 | 6 | /// 7 | /// Editor script, used to update the road in real time. 8 | /// 9 | [CustomEditor(typeof(EasyRoad))] 10 | public class EasyRoadEditor : Editor 11 | { 12 | EasyRoad creator; 13 | 14 | void OnSceneGUI() 15 | { 16 | if (creator.liveUpdate && Event.current.type == EventType.Repaint) 17 | { 18 | creator.UpdateMesh(); 19 | } 20 | } 21 | 22 | void OnEnable() 23 | { 24 | creator = (EasyRoad)target; 25 | } 26 | } -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Editor/EasyRoadEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b14db728d690d4630b6a2d7b6b5a15d3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/FollowPath.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | /// 6 | /// This is an example of the usage of Easy Spline Path 2D. 7 | /// In this example we use the function 'GetPointByDistance' to get the position a point in 8 | /// the curve corresponding to a distance messured along the curve starting from 9 | /// the first Node. 10 | /// 11 | /// 12 | public class FollowPath : MonoBehaviour 13 | { 14 | // A link to the GameObject containing the EasySlinePath2D script (provided by user in the editor) 15 | public EasySplinePath2D spline2D; 16 | // The speed of the object in Units per second 17 | public float speed = 5; 18 | // Should the object align to the movement (the X axis is used as forward) 19 | public bool align = false; 20 | // Set the position to the curve position at 'dist' distance and calculate the next distance at current speed. 21 | protected float dist = 0; 22 | 23 | virtual protected void Start() 24 | { 25 | StartCoroutine(MoveForwardRoutine()); 26 | } 27 | 28 | // Coroutine to move the card each tick 29 | IEnumerator MoveForwardRoutine() 30 | { 31 | dist = 0; 32 | while (true) 33 | { 34 | Move(); 35 | // Rotate the object towards the movement direction (current position to next position) 36 | if (align) 37 | { 38 | Vector2 dir = (spline2D.GetPointByDistance(dist, true) - (Vector2)transform.position).normalized; 39 | float angle = Mathf.Atan2(dir.y, dir.x) * Mathf.Rad2Deg; 40 | RotateToAlign(angle); 41 | 42 | } 43 | yield return null; 44 | } 45 | } 46 | 47 | virtual protected void RotateToAlign(float angle) 48 | { 49 | transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward); 50 | } 51 | // Function to rotate the object to face the direction of the movement 52 | virtual protected void Move() 53 | { 54 | transform.position = spline2D.GetPointByDistance(dist, true); 55 | dist += speed * Time.deltaTime; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/FollowPath.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 00cd19cd7f106464fbe5ab9ca58c6dfd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1d9552fcae3d74d079f502bdc004d04a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Materials/FloorMat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: FloorMat 10 | m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _AlphaTex: 22 | m_Texture: {fileID: 0} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | - _BumpMap: 26 | m_Texture: {fileID: 0} 27 | m_Scale: {x: 1, y: 1} 28 | m_Offset: {x: 0, y: 0} 29 | - _DetailAlbedoMap: 30 | m_Texture: {fileID: 0} 31 | m_Scale: {x: 1, y: 1} 32 | m_Offset: {x: 0, y: 0} 33 | - _DetailMask: 34 | m_Texture: {fileID: 0} 35 | m_Scale: {x: 1, y: 1} 36 | m_Offset: {x: 0, y: 0} 37 | - _DetailNormalMap: 38 | m_Texture: {fileID: 0} 39 | m_Scale: {x: 1, y: 1} 40 | m_Offset: {x: 0, y: 0} 41 | - _EmissionMap: 42 | m_Texture: {fileID: 0} 43 | m_Scale: {x: 1, y: 1} 44 | m_Offset: {x: 0, y: 0} 45 | - _MainTex: 46 | m_Texture: {fileID: 2800000, guid: 94f656bd9553e4848ad33b6491e3c4d2, type: 3} 47 | m_Scale: {x: 2, y: 2} 48 | m_Offset: {x: 0, y: 0} 49 | - _MetallicGlossMap: 50 | m_Texture: {fileID: 0} 51 | m_Scale: {x: 1, y: 1} 52 | m_Offset: {x: 0, y: 0} 53 | - _OcclusionMap: 54 | m_Texture: {fileID: 0} 55 | m_Scale: {x: 1, y: 1} 56 | m_Offset: {x: 0, y: 0} 57 | - _ParallaxMap: 58 | m_Texture: {fileID: 0} 59 | m_Scale: {x: 1, y: 1} 60 | m_Offset: {x: 0, y: 0} 61 | m_Floats: 62 | - PixelSnap: 0 63 | - _BumpScale: 1 64 | - _ColorMask: 15 65 | - _Cutoff: 0.5 66 | - _DetailNormalMapScale: 1 67 | - _DstBlend: 0 68 | - _EnableExternalAlpha: 0 69 | - _GlossMapScale: 1 70 | - _Glossiness: 0.5 71 | - _GlossyReflections: 1 72 | - _Metallic: 0 73 | - _Mode: 0 74 | - _OcclusionStrength: 1 75 | - _Parallax: 0.02 76 | - _SmoothnessTextureChannel: 0 77 | - _SpecularHighlights: 1 78 | - _SrcBlend: 1 79 | - _Stencil: 0 80 | - _StencilComp: 8 81 | - _StencilOp: 0 82 | - _StencilReadMask: 255 83 | - _StencilWriteMask: 255 84 | - _UVSec: 0 85 | - _UseUIAlphaClip: 0 86 | - _ZWrite: 1 87 | m_Colors: 88 | - _Color: {r: 1, g: 1, b: 1, a: 1} 89 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 90 | - _Flip: {r: 1, g: 1, b: 1, a: 1} 91 | - _RendererColor: {r: 1, g: 1, b: 1, a: 1} 92 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Materials/FloorMat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6b8df8f7847d14d348a3108c2861a66d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Materials/RoadMat.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: RoadMat 11 | m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: -1 17 | stringTagMap: {} 18 | disabledShaderPasses: [] 19 | m_SavedProperties: 20 | serializedVersion: 3 21 | m_TexEnvs: 22 | - _BumpMap: 23 | m_Texture: {fileID: 0} 24 | m_Scale: {x: 1, y: 1} 25 | m_Offset: {x: 0, y: 0} 26 | - _DetailAlbedoMap: 27 | m_Texture: {fileID: 0} 28 | m_Scale: {x: 1, y: 1} 29 | m_Offset: {x: 0, y: 0} 30 | - _DetailMask: 31 | m_Texture: {fileID: 0} 32 | m_Scale: {x: 1, y: 1} 33 | m_Offset: {x: 0, y: 0} 34 | - _DetailNormalMap: 35 | m_Texture: {fileID: 0} 36 | m_Scale: {x: 1, y: 1} 37 | m_Offset: {x: 0, y: 0} 38 | - _EmissionMap: 39 | m_Texture: {fileID: 0} 40 | m_Scale: {x: 1, y: 1} 41 | m_Offset: {x: 0, y: 0} 42 | - _MainTex: 43 | m_Texture: {fileID: 2800000, guid: da409862d27d0463cacec0950c36cfb8, type: 3} 44 | m_Scale: {x: 1, y: 25} 45 | m_Offset: {x: 0, y: 0} 46 | - _MetallicGlossMap: 47 | m_Texture: {fileID: 0} 48 | m_Scale: {x: 1, y: 1} 49 | m_Offset: {x: 0, y: 0} 50 | - _OcclusionMap: 51 | m_Texture: {fileID: 0} 52 | m_Scale: {x: 1, y: 1} 53 | m_Offset: {x: 0, y: 0} 54 | - _ParallaxMap: 55 | m_Texture: {fileID: 0} 56 | m_Scale: {x: 1, y: 1} 57 | m_Offset: {x: 0, y: 0} 58 | m_Floats: 59 | - _BumpScale: 1 60 | - _Cutoff: 0.5 61 | - _DetailNormalMapScale: 1 62 | - _DstBlend: 0 63 | - _GlossMapScale: 1 64 | - _Glossiness: 0.5 65 | - _GlossyReflections: 1 66 | - _Metallic: 0 67 | - _Mode: 0 68 | - _OcclusionStrength: 1 69 | - _Parallax: 0.02 70 | - _SmoothnessTextureChannel: 0 71 | - _SpecularHighlights: 1 72 | - _SrcBlend: 1 73 | - _UVSec: 0 74 | - _ZWrite: 1 75 | m_Colors: 76 | - _Color: {r: 1, g: 1, b: 1, a: 1} 77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 78 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Materials/RoadMat.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0f5c8f565599440aeb1ab3c04bf337ae 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3f4de5deac5994e50ae35e8d06416ec7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites/Blue_Car.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Demo/Sprites/Blue_Car.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites/Blue_Car.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 52dbedcceb4af46e39a44b57a0d9755b 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 5 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | grayScaleToAlpha: 0 25 | generateCubemap: 6 26 | cubemapConvolution: 0 27 | seamlessCubemap: 0 28 | textureFormat: 1 29 | maxTextureSize: 2048 30 | textureSettings: 31 | serializedVersion: 2 32 | filterMode: -1 33 | aniso: -1 34 | mipBias: -1 35 | wrapU: 1 36 | wrapV: 1 37 | wrapW: 1 38 | nPOTScale: 0 39 | lightmap: 0 40 | compressionQuality: 50 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spritePixelsToUnits: 100 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spriteGenerateFallbackPhysicsShape: 1 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 8 53 | textureShape: 1 54 | singleChannelComponent: 0 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - serializedVersion: 2 60 | buildTarget: DefaultTexturePlatform 61 | maxTextureSize: 2048 62 | resizeAlgorithm: 0 63 | textureFormat: -1 64 | textureCompression: 1 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | androidETC2FallbackOverride: 0 70 | - serializedVersion: 2 71 | buildTarget: Standalone 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | - serializedVersion: 2 82 | buildTarget: iPhone 83 | maxTextureSize: 2048 84 | resizeAlgorithm: 0 85 | textureFormat: -1 86 | textureCompression: 1 87 | compressionQuality: 50 88 | crunchedCompression: 0 89 | allowsAlphaSplitting: 0 90 | overridden: 0 91 | androidETC2FallbackOverride: 0 92 | - serializedVersion: 2 93 | buildTarget: Android 94 | maxTextureSize: 2048 95 | resizeAlgorithm: 0 96 | textureFormat: -1 97 | textureCompression: 1 98 | compressionQuality: 50 99 | crunchedCompression: 0 100 | allowsAlphaSplitting: 0 101 | overridden: 0 102 | androidETC2FallbackOverride: 0 103 | - serializedVersion: 2 104 | buildTarget: WebGL 105 | maxTextureSize: 2048 106 | resizeAlgorithm: 0 107 | textureFormat: -1 108 | textureCompression: 1 109 | compressionQuality: 50 110 | crunchedCompression: 0 111 | allowsAlphaSplitting: 0 112 | overridden: 0 113 | androidETC2FallbackOverride: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: 0ad7af6af679043e4bce9459ae82d1c7 121 | vertices: [] 122 | indices: 123 | edges: [] 124 | weights: [] 125 | spritePackingTag: 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites/FloorTile_S.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Demo/Sprites/FloorTile_S.jpg -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites/FloorTile_S.jpg.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 94f656bd9553e4848ad33b6491e3c4d2 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 5 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 0 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | grayScaleToAlpha: 0 25 | generateCubemap: 6 26 | cubemapConvolution: 0 27 | seamlessCubemap: 0 28 | textureFormat: 1 29 | maxTextureSize: 2048 30 | textureSettings: 31 | serializedVersion: 2 32 | filterMode: -1 33 | aniso: -1 34 | mipBias: -1 35 | wrapU: 0 36 | wrapV: 0 37 | wrapW: 0 38 | nPOTScale: 0 39 | lightmap: 0 40 | compressionQuality: 50 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spritePixelsToUnits: 100 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spriteGenerateFallbackPhysicsShape: 1 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 8 53 | textureShape: 1 54 | singleChannelComponent: 0 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - serializedVersion: 2 60 | buildTarget: DefaultTexturePlatform 61 | maxTextureSize: 2048 62 | resizeAlgorithm: 0 63 | textureFormat: -1 64 | textureCompression: 1 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | androidETC2FallbackOverride: 0 70 | - serializedVersion: 2 71 | buildTarget: Standalone 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 1 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | - serializedVersion: 2 82 | buildTarget: iPhone 83 | maxTextureSize: 2048 84 | resizeAlgorithm: 0 85 | textureFormat: -1 86 | textureCompression: 1 87 | compressionQuality: 50 88 | crunchedCompression: 0 89 | allowsAlphaSplitting: 0 90 | overridden: 0 91 | androidETC2FallbackOverride: 0 92 | - serializedVersion: 2 93 | buildTarget: Android 94 | maxTextureSize: 2048 95 | resizeAlgorithm: 0 96 | textureFormat: -1 97 | textureCompression: 1 98 | compressionQuality: 50 99 | crunchedCompression: 0 100 | allowsAlphaSplitting: 0 101 | overridden: 0 102 | androidETC2FallbackOverride: 0 103 | - serializedVersion: 2 104 | buildTarget: WebGL 105 | maxTextureSize: 2048 106 | resizeAlgorithm: 0 107 | textureFormat: -1 108 | textureCompression: 1 109 | compressionQuality: 50 110 | crunchedCompression: 0 111 | allowsAlphaSplitting: 0 112 | overridden: 0 113 | androidETC2FallbackOverride: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: bc99ffe8657d5400190553fc445d9a39 121 | vertices: [] 122 | indices: 123 | edges: [] 124 | weights: [] 125 | spritePackingTag: 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f59299c62e2d340a6b930cbe2aaf8cbf 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites/Materials/Zeppelin.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_PrefabParentObject: {fileID: 0} 8 | m_PrefabInternal: {fileID: 0} 9 | m_Name: Zeppelin 10 | m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} 11 | m_ShaderKeywords: 12 | m_LightmapFlags: 4 13 | m_EnableInstancingVariants: 0 14 | m_DoubleSidedGI: 0 15 | m_CustomRenderQueue: -1 16 | stringTagMap: {} 17 | disabledShaderPasses: [] 18 | m_SavedProperties: 19 | serializedVersion: 3 20 | m_TexEnvs: 21 | - _MainTex: 22 | m_Texture: {fileID: 2800000, guid: d44e9c055280e437eaae7e4b606da179, type: 3} 23 | m_Scale: {x: 1, y: 1} 24 | m_Offset: {x: 0, y: 0} 25 | m_Floats: [] 26 | m_Colors: [] 27 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites/Materials/Zeppelin.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f1afdbc4eb39e4246be730d30542a642 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 2100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites/Zeppelin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Demo/Sprites/Zeppelin.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites/Zeppelin.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d44e9c055280e437eaae7e4b606da179 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 5 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 1 24 | grayScaleToAlpha: 0 25 | generateCubemap: 6 26 | cubemapConvolution: 0 27 | seamlessCubemap: 0 28 | textureFormat: 1 29 | maxTextureSize: 2048 30 | textureSettings: 31 | serializedVersion: 2 32 | filterMode: -1 33 | aniso: 1 34 | mipBias: -1 35 | wrapU: 1 36 | wrapV: 1 37 | wrapW: 1 38 | nPOTScale: 0 39 | lightmap: 0 40 | compressionQuality: 50 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spritePixelsToUnits: 100 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spriteGenerateFallbackPhysicsShape: 1 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 8 53 | textureShape: 1 54 | singleChannelComponent: 0 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - serializedVersion: 2 60 | buildTarget: DefaultTexturePlatform 61 | maxTextureSize: 2048 62 | resizeAlgorithm: 0 63 | textureFormat: -1 64 | textureCompression: 0 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | androidETC2FallbackOverride: 0 70 | - serializedVersion: 2 71 | buildTarget: Standalone 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | - serializedVersion: 2 82 | buildTarget: iPhone 83 | maxTextureSize: 2048 84 | resizeAlgorithm: 0 85 | textureFormat: -1 86 | textureCompression: 0 87 | compressionQuality: 50 88 | crunchedCompression: 0 89 | allowsAlphaSplitting: 0 90 | overridden: 0 91 | androidETC2FallbackOverride: 0 92 | - serializedVersion: 2 93 | buildTarget: Android 94 | maxTextureSize: 2048 95 | resizeAlgorithm: 0 96 | textureFormat: -1 97 | textureCompression: 0 98 | compressionQuality: 50 99 | crunchedCompression: 0 100 | allowsAlphaSplitting: 0 101 | overridden: 0 102 | androidETC2FallbackOverride: 0 103 | - serializedVersion: 2 104 | buildTarget: WebGL 105 | maxTextureSize: 2048 106 | resizeAlgorithm: 0 107 | textureFormat: -1 108 | textureCompression: 0 109 | compressionQuality: 50 110 | crunchedCompression: 0 111 | allowsAlphaSplitting: 0 112 | overridden: 0 113 | androidETC2FallbackOverride: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: 9f081e3f1461d4b54b2b7371af89a34f 121 | vertices: [] 122 | indices: 123 | edges: [] 124 | weights: [] 125 | spritePackingTag: 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites/track.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Demo/Sprites/track.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Demo/Sprites/track.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: da409862d27d0463cacec0950c36cfb8 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 5 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | grayScaleToAlpha: 0 25 | generateCubemap: 6 26 | cubemapConvolution: 0 27 | seamlessCubemap: 0 28 | textureFormat: 1 29 | maxTextureSize: 2048 30 | textureSettings: 31 | serializedVersion: 2 32 | filterMode: -1 33 | aniso: -1 34 | mipBias: -1 35 | wrapU: 0 36 | wrapV: 0 37 | wrapW: 0 38 | nPOTScale: 0 39 | lightmap: 0 40 | compressionQuality: 50 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spritePixelsToUnits: 100 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spriteGenerateFallbackPhysicsShape: 1 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 8 53 | textureShape: 1 54 | singleChannelComponent: 0 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - serializedVersion: 2 60 | buildTarget: DefaultTexturePlatform 61 | maxTextureSize: 2048 62 | resizeAlgorithm: 0 63 | textureFormat: -1 64 | textureCompression: 0 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | androidETC2FallbackOverride: 0 70 | - serializedVersion: 2 71 | buildTarget: Standalone 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | - serializedVersion: 2 82 | buildTarget: iPhone 83 | maxTextureSize: 2048 84 | resizeAlgorithm: 0 85 | textureFormat: -1 86 | textureCompression: 0 87 | compressionQuality: 50 88 | crunchedCompression: 0 89 | allowsAlphaSplitting: 0 90 | overridden: 0 91 | androidETC2FallbackOverride: 0 92 | - serializedVersion: 2 93 | buildTarget: Android 94 | maxTextureSize: 2048 95 | resizeAlgorithm: 0 96 | textureFormat: -1 97 | textureCompression: 0 98 | compressionQuality: 50 99 | crunchedCompression: 0 100 | allowsAlphaSplitting: 0 101 | overridden: 0 102 | androidETC2FallbackOverride: 0 103 | - serializedVersion: 2 104 | buildTarget: WebGL 105 | maxTextureSize: 2048 106 | resizeAlgorithm: 0 107 | textureFormat: -1 108 | textureCompression: 0 109 | compressionQuality: 50 110 | crunchedCompression: 0 111 | allowsAlphaSplitting: 0 112 | overridden: 0 113 | androidETC2FallbackOverride: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: b4716d8dd3ab446d3b5af7adaa61263d 121 | vertices: [] 122 | indices: 123 | edges: [] 124 | weights: [] 125 | spritePackingTag: 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Documentation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: edd6b2a9536694abdaf215d49a3e9bd9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Documentation/EasySplinePath2D_Documentation.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Documentation/EasySplinePath2D_Documentation.pdf -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Documentation/EasySplinePath2D_Documentation.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ba62bb40b68524eb1b4c4d93abadafb6 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Documentation/EasySplinePath2D_ScriptingAPI.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Documentation/EasySplinePath2D_ScriptingAPI.pdf -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Documentation/EasySplinePath2D_ScriptingAPI.pdf.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: cc34ae8a462b04b7493f1ae6c79b597c 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/EasySplinePath2D.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1001 &100100000 4 | Prefab: 5 | m_ObjectHideFlags: 1 6 | serializedVersion: 2 7 | m_Modification: 8 | m_TransformParent: {fileID: 0} 9 | m_Modifications: [] 10 | m_RemovedComponents: [] 11 | m_ParentPrefab: {fileID: 0} 12 | m_RootGameObject: {fileID: 1414421954931328} 13 | m_IsPrefabParent: 1 14 | --- !u!1 &1414421954931328 15 | GameObject: 16 | m_ObjectHideFlags: 0 17 | m_PrefabParentObject: {fileID: 0} 18 | m_PrefabInternal: {fileID: 100100000} 19 | serializedVersion: 5 20 | m_Component: 21 | - component: {fileID: 4779047211087276} 22 | - component: {fileID: 114670559187316500} 23 | - component: {fileID: 114358004978974718} 24 | m_Layer: 0 25 | m_Name: EasySplinePath2D 26 | m_TagString: Untagged 27 | m_Icon: {fileID: 0} 28 | m_NavMeshLayer: 0 29 | m_StaticEditorFlags: 0 30 | m_IsActive: 1 31 | --- !u!4 &4779047211087276 32 | Transform: 33 | m_ObjectHideFlags: 1 34 | m_PrefabParentObject: {fileID: 0} 35 | m_PrefabInternal: {fileID: 100100000} 36 | m_GameObject: {fileID: 1414421954931328} 37 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 38 | m_LocalPosition: {x: 0, y: 0, z: 0} 39 | m_LocalScale: {x: 1, y: 1, z: 1} 40 | m_Children: [] 41 | m_Father: {fileID: 0} 42 | m_RootOrder: 0 43 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 44 | --- !u!114 &114358004978974718 45 | MonoBehaviour: 46 | m_ObjectHideFlags: 1 47 | m_PrefabParentObject: {fileID: 0} 48 | m_PrefabInternal: {fileID: 100100000} 49 | m_GameObject: {fileID: 1414421954931328} 50 | m_Enabled: 1 51 | m_EditorHideFlags: 0 52 | m_Script: {fileID: 11500000, guid: 59e9c0eb9b42c884ca2c461b64c5b842, type: 3} 53 | m_Name: 54 | m_EditorClassIdentifier: 55 | path: 56 | points: 57 | - {x: -1, y: 0} 58 | - {x: -0.5, y: 0.5} 59 | - {x: -0.5, y: -0.5} 60 | - {x: 1, y: 0} 61 | closed: 0 62 | setControlPointsAutomatically: 0 63 | offset: {x: 0, y: 0} 64 | lockStatus: 0100000001000000 65 | displayScale: 1 66 | hideControlPoints: 0 67 | allwaysVisible: 0 68 | autoUpdate: 0 69 | defaultControlType: 1 70 | lineColor: {r: 0.84, g: 0.96, b: 1, a: 1} 71 | handleLineColor: {r: 0.16, g: 0.5, b: 1, a: 1} 72 | highlightColor: {r: 1, g: 0.8, b: 0, a: 1} 73 | spacing: 0.1 74 | resolution: 1 75 | started: 0 76 | points: [] 77 | selected: 1 78 | offset: {x: 0, y: 0} 79 | anchorIconSize: 0.35 80 | controlIconSize: 0.12 81 | buttonIconSize: 0.19 82 | addIconSize: 0.2 83 | anchorDiameter: 0.17 84 | buttonDiameter: 0.09 85 | controlDiameter: 0.059 86 | lastScale: {x: 1, y: 1, z: 1} 87 | saveOnPlay: 0 88 | --- !u!114 &114670559187316500 89 | MonoBehaviour: 90 | m_ObjectHideFlags: 1 91 | m_PrefabParentObject: {fileID: 0} 92 | m_PrefabInternal: {fileID: 100100000} 93 | m_GameObject: {fileID: 1414421954931328} 94 | m_Enabled: 1 95 | m_EditorHideFlags: 0 96 | m_Script: {fileID: 11500000, guid: 4cc12e466d9df49fca16e170c8032089, type: 3} 97 | m_Name: 98 | m_EditorClassIdentifier: 99 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/EasySplinePath2D.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d498ad7bb3824ea591fe90b739f8f4b 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 100100000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 76c31ae64bcf441789699d374428f58a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Bezier.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | 5 | public static class Bezier { 6 | 7 | public static Vector2 EvaluateQuadratic(Vector2 a, Vector2 b, Vector2 c, float t) 8 | { 9 | Vector2 p0 = Vector2.Lerp(a, b, t); 10 | Vector2 p1 = Vector2.Lerp(b, c, t); 11 | return Vector2.Lerp(p0, p1, t); 12 | } 13 | 14 | public static Vector2 EvaluateCubic(Vector2 a, Vector2 b, Vector2 c, Vector2 d, float t) 15 | { 16 | Vector2 p0 = EvaluateQuadratic(a, b, c, t); 17 | Vector2 p1 = EvaluateQuadratic(b, c, d, t); 18 | return Vector2.Lerp(p0, p1, t); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Bezier.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b875a67708fbc344dbc493082813b3dd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/EasySplinePath2D.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 59e9c0eb9b42c884ca2c461b64c5b842 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ad02d33f7c8fbb0418a368da5204e42c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/EasySplinePath2DEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 986088244d85d9e40a21d15c57a094dc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 74cadbea37bb7c4459a6035ed56f944d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a485194632709914dade89ffb656968d 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/add.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/add.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 371bcd2fd060c2d4dbbc3e5fa6aef1aa 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 5 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | grayScaleToAlpha: 0 25 | generateCubemap: 6 26 | cubemapConvolution: 0 27 | seamlessCubemap: 0 28 | textureFormat: 1 29 | maxTextureSize: 2048 30 | textureSettings: 31 | serializedVersion: 2 32 | filterMode: -1 33 | aniso: 1 34 | mipBias: -1 35 | wrapU: 1 36 | wrapV: 1 37 | wrapW: 1 38 | nPOTScale: 0 39 | lightmap: 0 40 | compressionQuality: 50 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spritePixelsToUnits: 100 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spriteGenerateFallbackPhysicsShape: 1 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 2 53 | textureShape: 1 54 | singleChannelComponent: 0 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - serializedVersion: 2 60 | buildTarget: DefaultTexturePlatform 61 | maxTextureSize: 2048 62 | resizeAlgorithm: 0 63 | textureFormat: -1 64 | textureCompression: 0 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | androidETC2FallbackOverride: 0 70 | - serializedVersion: 2 71 | buildTarget: Standalone 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | - serializedVersion: 2 82 | buildTarget: iPhone 83 | maxTextureSize: 2048 84 | resizeAlgorithm: 0 85 | textureFormat: -1 86 | textureCompression: 0 87 | compressionQuality: 50 88 | crunchedCompression: 0 89 | allowsAlphaSplitting: 0 90 | overridden: 0 91 | androidETC2FallbackOverride: 0 92 | - serializedVersion: 2 93 | buildTarget: Android 94 | maxTextureSize: 2048 95 | resizeAlgorithm: 0 96 | textureFormat: -1 97 | textureCompression: 0 98 | compressionQuality: 50 99 | crunchedCompression: 0 100 | allowsAlphaSplitting: 0 101 | overridden: 0 102 | androidETC2FallbackOverride: 0 103 | - serializedVersion: 2 104 | buildTarget: WebGL 105 | maxTextureSize: 2048 106 | resizeAlgorithm: 0 107 | textureFormat: -1 108 | textureCompression: 0 109 | compressionQuality: 50 110 | crunchedCompression: 0 111 | allowsAlphaSplitting: 0 112 | overridden: 0 113 | androidETC2FallbackOverride: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: 24a2ce3025a874d08bd2c6fa73633209 121 | vertices: [] 122 | indices: 123 | edges: [] 124 | weights: [] 125 | spritePackingTag: 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/boton_recto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/boton_recto.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/boton_recto_u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/boton_recto_u.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/control.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/curve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/curve.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_auto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_auto.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_auto_u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_auto_u.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_free.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_free.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_free_u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_free_u.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_lock.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_lock_u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/mode_lock_u.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/node.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/node.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 34af38b91c189f94bb40bf632cdc6dd4 3 | TextureImporter: 4 | fileIDToRecycleName: {} 5 | externalObjects: {} 6 | serializedVersion: 5 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | grayScaleToAlpha: 0 25 | generateCubemap: 6 26 | cubemapConvolution: 0 27 | seamlessCubemap: 0 28 | textureFormat: 1 29 | maxTextureSize: 2048 30 | textureSettings: 31 | serializedVersion: 2 32 | filterMode: 1 33 | aniso: 1 34 | mipBias: -1 35 | wrapU: 1 36 | wrapV: 1 37 | wrapW: 1 38 | nPOTScale: 0 39 | lightmap: 0 40 | compressionQuality: 50 41 | spriteMode: 1 42 | spriteExtrude: 1 43 | spriteMeshType: 1 44 | alignment: 0 45 | spritePivot: {x: 0.5, y: 0.5} 46 | spritePixelsToUnits: 100 47 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 48 | spriteGenerateFallbackPhysicsShape: 1 49 | alphaUsage: 1 50 | alphaIsTransparency: 1 51 | spriteTessellationDetail: -1 52 | textureType: 2 53 | textureShape: 1 54 | singleChannelComponent: 0 55 | maxTextureSizeSet: 0 56 | compressionQualitySet: 0 57 | textureFormatSet: 0 58 | platformSettings: 59 | - serializedVersion: 2 60 | buildTarget: DefaultTexturePlatform 61 | maxTextureSize: 2048 62 | resizeAlgorithm: 0 63 | textureFormat: -1 64 | textureCompression: 0 65 | compressionQuality: 50 66 | crunchedCompression: 0 67 | allowsAlphaSplitting: 0 68 | overridden: 0 69 | androidETC2FallbackOverride: 0 70 | - serializedVersion: 2 71 | buildTarget: Standalone 72 | maxTextureSize: 2048 73 | resizeAlgorithm: 0 74 | textureFormat: -1 75 | textureCompression: 0 76 | compressionQuality: 50 77 | crunchedCompression: 0 78 | allowsAlphaSplitting: 0 79 | overridden: 0 80 | androidETC2FallbackOverride: 0 81 | - serializedVersion: 2 82 | buildTarget: iPhone 83 | maxTextureSize: 2048 84 | resizeAlgorithm: 0 85 | textureFormat: -1 86 | textureCompression: 0 87 | compressionQuality: 50 88 | crunchedCompression: 0 89 | allowsAlphaSplitting: 0 90 | overridden: 0 91 | androidETC2FallbackOverride: 0 92 | - serializedVersion: 2 93 | buildTarget: Android 94 | maxTextureSize: 2048 95 | resizeAlgorithm: 0 96 | textureFormat: -1 97 | textureCompression: 0 98 | compressionQuality: 50 99 | crunchedCompression: 0 100 | allowsAlphaSplitting: 0 101 | overridden: 0 102 | androidETC2FallbackOverride: 0 103 | - serializedVersion: 2 104 | buildTarget: WebGL 105 | maxTextureSize: 2048 106 | resizeAlgorithm: 0 107 | textureFormat: -1 108 | textureCompression: 0 109 | compressionQuality: 50 110 | crunchedCompression: 0 111 | allowsAlphaSplitting: 0 112 | overridden: 0 113 | androidETC2FallbackOverride: 0 114 | spriteSheet: 115 | serializedVersion: 2 116 | sprites: [] 117 | outline: [] 118 | physicsShape: [] 119 | bones: [] 120 | spriteID: ed305276225bc4d86a4c6db07034fc5c 121 | vertices: [] 122 | indices: 123 | edges: [] 124 | weights: [] 125 | spritePackingTag: 126 | userData: 127 | assetBundleName: 128 | assetBundleVariant: 129 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/node_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/node_delete.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/node_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/node_selected.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/nodo_auto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/nodo_auto.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/nodo_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/nodo_control.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/nodo_control_free.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/nodo_control_free.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/rect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2D/Scripts/Editor/Resources/EasySplinePath2D/rect.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/SplinePath2D.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8302e7ba5611a4b41b2802cf6b67a709 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2D/Scripts/SplinePrinter.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4cc12e466d9df49fca16e170c8032089 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f1891de4878c5dd4a8fcb9d5ea3338aa 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Captures~/EasySplinePath2DPlus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Captures~/EasySplinePath2DPlus.gif -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Demo.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d5d7f229c4fd5134781c73b1e6e6b8d7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Demo/DemoScene.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 866d3b5e82e94154ba935e71d9c37b08 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Demo/EasyRoadPlus.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | /// 4 | /// Example script that uses EasySplinePath2DPlus to generate a mesh that follows the spline. 5 | /// 6 | [RequireComponent(typeof(EasySplinePath2DPlus))] 7 | [RequireComponent(typeof(MeshFilter))] 8 | [RequireComponent(typeof(MeshRenderer))] 9 | public class EasyRoadPlus : MonoBehaviour 10 | { 11 | public float trackWidth = 3; 12 | [Range(.05f, 1.5f)] 13 | public float segmentLength = 1; 14 | public float tiling = 1; 15 | public bool liveUpdate; 16 | 17 | public void UpdateMesh() 18 | { 19 | SplinePath2D spline = GetComponent().path; 20 | Vector2[] points = spline.GetEquidistancePoints(segmentLength); 21 | GetComponent().mesh = CreateMesh(points, spline.IsClosed, trackWidth); 22 | int texture = Mathf.RoundToInt(tiling * points.Length * segmentLength * .05f); 23 | GetComponent().sharedMaterial.mainTextureScale = new Vector2(1, texture); 24 | } 25 | 26 | /// 27 | /// Function to create the mesh of the road, from the points of the curve. 28 | /// 29 | public Mesh CreateMesh(Vector2[] points, bool closed, float roadWidth) 30 | { 31 | Vector3[] vertices = new Vector3[points.Length * 2]; 32 | Vector2[] uvs = new Vector2[vertices.Length]; 33 | int numTris = 2 * (points.Length - 1) + ((closed) ? 2 : 0); 34 | int[] tris = new int[numTris * 3]; 35 | int vertIndex = 0; 36 | int triIndex = 0; 37 | 38 | for (int i = 0; i < points.Length; i++) 39 | { 40 | Vector2 forward = Vector2.zero; 41 | if (i < points.Length - 1 || closed) 42 | { 43 | forward += points[(i + 1) % points.Length] - points[i]; 44 | } 45 | if (i > 0 || closed) 46 | { 47 | forward += points[i] - points[(i - 1 + points.Length) % points.Length]; 48 | } 49 | forward.Normalize(); 50 | Vector2 left = new Vector2(-forward.y, forward.x); 51 | 52 | vertices[vertIndex] = points[i] + left * roadWidth * .5f; 53 | vertices[vertIndex + 1] = points[i] - left * roadWidth * .5f; 54 | 55 | float completionPercent = i / (float)(points.Length - 1); 56 | float v = 1 - Mathf.Abs(2 * completionPercent - 1); 57 | uvs[vertIndex] = new Vector2(0, v); 58 | uvs[vertIndex + 1] = new Vector2(1, v); 59 | 60 | if (i < points.Length - 1 || closed) 61 | { 62 | tris[triIndex] = vertIndex; 63 | tris[triIndex + 1] = (vertIndex + 2) % vertices.Length; 64 | tris[triIndex + 2] = vertIndex + 1; 65 | 66 | tris[triIndex + 3] = vertIndex + 1; 67 | tris[triIndex + 4] = (vertIndex + 2) % vertices.Length; 68 | tris[triIndex + 5] = (vertIndex + 3) % vertices.Length; 69 | } 70 | 71 | vertIndex += 2; 72 | triIndex += 6; 73 | } 74 | 75 | Mesh mesh = new Mesh(); 76 | mesh.vertices = vertices; 77 | mesh.triangles = tris; 78 | mesh.uv = uvs; 79 | 80 | return mesh; 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Demo/EasyRoadPlus.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9e27a41346bc94b4dab4bbae662c82c8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Demo/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d16453398dcfc0c48bc7a7490035fa5a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Demo/Editor/EasyRoadPlusEditor.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEditor; 5 | 6 | /// 7 | /// Editor script, used to update the road in real time. 8 | /// 9 | [CustomEditor(typeof(EasyRoadPlus))] 10 | public class EasyRoadPlusEditor : Editor 11 | { 12 | EasyRoadPlus creator; 13 | 14 | void OnSceneGUI() 15 | { 16 | if (creator.liveUpdate && Event.current.type == EventType.Repaint) 17 | { 18 | creator.UpdateMesh(); 19 | } 20 | } 21 | 22 | void OnEnable() 23 | { 24 | creator = (EasyRoadPlus)target; 25 | } 26 | } -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Demo/Editor/EasyRoadPlusEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7796478a6100be44d892a8714d07cd3d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Demo/FollowPathPlus.cs: -------------------------------------------------------------------------------- 1 | using UnityEngine; 2 | 3 | /// 4 | /// This is an example of the usage of Easy Spline Path 2D Plus. 5 | /// In this example we use the function 'GetPointByDistance' to get the position a point in 6 | /// the curve corresponding to a distance measured along the curve starting from the first Node. 7 | /// 8 | public class FollowPathPlus : MonoBehaviour { 9 | // A link to the GameObject containing the EasySplinePath2DPlus script (provided by user in the editor) 10 | public EasySplinePath2DPlus spline2D; 11 | 12 | // The speed of the object in Units per second 13 | public float speed = 5; 14 | 15 | // Should the object align to the movement (the X axis is used as forward) 16 | public bool align = false; 17 | 18 | // Set the position to the curve position at 'dist' distance and calculate the next distance at current speed. 19 | public float dist = 0; 20 | 21 | private void Update() { 22 | transform.position = spline2D.GetPointByDistance(dist, true); 23 | dist += speed * Time.deltaTime; 24 | if (align) { 25 | transform.LookAt(spline2D.GetPointByDistance(dist, true), -spline2D.transform.forward); 26 | } 27 | } 28 | 29 | #if UNITY_EDITOR 30 | [Header("Editor")] 31 | public bool moveOnValidate; 32 | public bool alignOnValidate; 33 | 34 | private void OnValidate() { 35 | if (spline2D) { 36 | spline2D.SetUp(); 37 | dist = Mathf.Repeat(dist, spline2D.GetLength()); 38 | if (moveOnValidate) { 39 | Move(); 40 | } 41 | if (alignOnValidate) { 42 | Align(); 43 | } 44 | } 45 | } 46 | 47 | [ContextMenu("Move")] 48 | private void Move() { 49 | transform.position = spline2D.GetPointByDistance(dist, true); 50 | } 51 | 52 | [ContextMenu("Align")] 53 | private void Align() { 54 | float dist1, dist2; 55 | float length = spline2D.GetLength(); 56 | if (dist < length) { 57 | dist1 = dist; 58 | dist2 = Mathf.Min(dist + 0.00001F, length); 59 | } else { 60 | dist1 = Mathf.Max(length - 0.00001F, 0); 61 | dist2 = length; 62 | } 63 | Vector3 pos1 = spline2D.GetPointByDistance(dist1, true); 64 | Vector3 pos2 = spline2D.GetPointByDistance(dist2, true); 65 | transform.LookAt(transform.position + (pos2 - pos1), -spline2D.transform.forward); 66 | } 67 | #endif 68 | } 69 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Demo/FollowPathPlus.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 798e2611eb6e4cd2a3cc37d72c427426 3 | timeCreated: 1685204687 -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 984ff1d085b33b7419c20a6fe98265ed 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/EasySplinePath2DPlus.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d30c6edeb7941de47a9fa716f7ec2f98 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1f187fff3afb2d0429c2e0aae0d9fa12 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/EasySplinePath2DPlusEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d543b2f9ba6676d45b29fb10ce09920b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d652424bc514f344e960124949f992a9 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9833944e07a4e9c4094619a95dab20ef 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/add.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/boton_recto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/boton_recto.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/boton_recto_u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/boton_recto_u.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/control.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/curve.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/curve.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_auto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_auto.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_auto_u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_auto_u.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_free.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_free.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_free_u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_free_u.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_lock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_lock.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_lock_u.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/mode_lock_u.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/node.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/node_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/node_delete.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/node_selected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/node_selected.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/nodo_auto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/nodo_auto.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/nodo_control.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/nodo_control.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/nodo_control_free.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/nodo_control_free.png -------------------------------------------------------------------------------- /Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/rect.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/EasySplinePath2DPlus/Scripts/Editor/Resources/EasySplinePath2D/rect.png -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 070f6a956b394744a9cf63a9433fa5ce 3 | timeCreated: 1720275646 -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Captures~/ImageCropping.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/ImageCropping/Captures~/ImageCropping.gif -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Documentation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6c8e9a3f397d4488bdf242795e91413c 3 | timeCreated: 1720275686 -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Documentation/ImageCropping.md: -------------------------------------------------------------------------------- 1 | ## ImageCropping 2 | * 裁剪区域设置中的「左上宽高」、「对角坐标」、「四边边距」三个按钮可以不同方式展示裁剪区域数值。 3 | * 拖动裁剪框边缘可以调整裁剪框,拖动到视口边缘可以自动滚动视口。 4 | * 拖动视口其他位置可以移动整个视口位置,在视口中滚动鼠标滚轮可以缩放视口。 5 | * 视口右下角可以快捷设置裁剪区域。 6 | * 视口右上角可以设置圆角类型和相关参数。 7 | * 视口左上角可以切换预览开关,打开预览开关,则隐藏原图,显示裁剪后的图片。 8 | * 视口下方的「100%」、「原图适应屏幕」、「整体适应屏幕」三个按钮可以将视口缩放到指定大小。 9 | * 裁剪后的图片可保存至文件。 -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Documentation/ImageCropping.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 25e9b5f76aeab094cbf06fae79e6a0e6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7b98c35b8d254012a32e4d19236126f8 3 | timeCreated: 1720275707 -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Editor/ImageCropping - Unlit.shader: -------------------------------------------------------------------------------- 1 | Shader "Hidden/ImageCropping/Unlit" 2 | { 3 | Properties 4 | { 5 | _Mode("Mode", int) = 0 6 | 7 | _Color("Color", Color) = (1,1,1,1) 8 | _MainTex("Base (RGB), Alpha (A)", 2D) = "white" {} 9 | _ScaleAndOffset("Scale And Offset", Vector) = (1, 1, 0, 0) 10 | 11 | _CornerMode("Corner Mode", int) = 0 12 | _RoundRadiusX("Round Radius X", Range(0, 0.5)) = 0 13 | _RoundRadiusY("Round Radius Y", Range(0, 0.5)) = 0 14 | _HyperEllipticPower("Hyper Rlliptic Power", Range(0, 10)) = 3 15 | _Softness ("Softness", Range(0, 1)) = 0 16 | _EdgeMove ("Edge Move", Range(-1, 1)) = 0 17 | } 18 | SubShader 19 | { 20 | LOD 200 21 | 22 | Tags 23 | { 24 | "Queue" = "Transparent" 25 | "IgnoreProjector" = "True" 26 | "RenderType" = "Transparent" 27 | } 28 | 29 | Pass 30 | { 31 | Cull Off 32 | Lighting Off 33 | ZWrite Off 34 | Offset -1, -1 35 | Fog { Mode Off } 36 | Blend SrcAlpha OneMinusSrcAlpha 37 | 38 | CGPROGRAM 39 | #pragma vertex vert 40 | #pragma fragment frag 41 | 42 | #include "UnityCG.cginc" 43 | 44 | int _Mode; 45 | sampler2D _MainTex; 46 | float4 _ScaleAndOffset; 47 | fixed4 _Color; 48 | 49 | int _CornerMode; 50 | float _RoundRadiusX; 51 | float _RoundRadiusY; 52 | float _HyperEllipticPower; 53 | float _Softness; 54 | float _EdgeMove; 55 | 56 | struct appdata { 57 | float4 vertex : POSITION; 58 | float2 uv : TEXCOORD0; 59 | }; 60 | 61 | struct v2f { 62 | float4 vertex : SV_POSITION; 63 | float2 uv : TEXCOORD0; 64 | }; 65 | 66 | v2f vert (appdata v) { 67 | v2f o; 68 | o.vertex = UnityObjectToClipPos(v.vertex); 69 | o.uv = v.uv; 70 | return o; 71 | } 72 | 73 | fixed4 frag (v2f i) : SV_Target { 74 | half4 col; 75 | if (_Mode == 0) { 76 | col = _Color; 77 | if (_CornerMode == 0) { 78 | col.a = 0; 79 | } 80 | } else { 81 | float2 uv = i.uv * _ScaleAndOffset.xy + _ScaleAndOffset.zw; 82 | col = tex2D(_MainTex, uv); 83 | if (uv.x < 0 || uv.x > 1 || uv.y < 0 || uv.y > 1) { 84 | col.a = 0; 85 | } 86 | } 87 | if (_CornerMode == 1) { 88 | if (_RoundRadiusX > 0 && _RoundRadiusY > 0) { 89 | float4 range = float4(_RoundRadiusX, _RoundRadiusY, 1 - _RoundRadiusX, 1 - _RoundRadiusY); 90 | float2 delta = abs(i.uv - clamp(i.uv, range.xy, range.zw)) / float2(_RoundRadiusX, _RoundRadiusY); 91 | col.a *= clamp((1 - (delta.x * delta.x + delta.y * delta.y)) / (_Softness + 0.0001) + _EdgeMove, 0, 1); 92 | } 93 | } else if (_CornerMode == 2) { 94 | float2 pos = i.uv * 2 - 1; 95 | float distance = pow(abs(pos.x), _HyperEllipticPower) + pow(abs(pos.y), _HyperEllipticPower); 96 | col.a *= clamp((1 - distance) / (_Softness + 0.0001) + _EdgeMove, 0, 1); 97 | } 98 | return col; 99 | } 100 | ENDCG 101 | } 102 | } 103 | FallBack "Unlit/Transparent" 104 | } -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Editor/ImageCropping - Unlit.shader.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 464f6aed3d0723443814cbfaff2d28b7 3 | ShaderImporter: 4 | externalObjects: {} 5 | defaultTextures: [] 6 | nonModifiableTextures: [] 7 | preprocessorOverride: 0 8 | userData: 9 | assetBundleName: 10 | assetBundleVariant: 11 | -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Editor/ImageCropping.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b84923ffe1754304c9fd4f837fad02ab 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Editor/PopupContent.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wangyun 3 | * @CreateTime: 2024-08-08 21:44:43 731 4 | * @LastEditor: wangyun 5 | * @EditTime: 2024-08-08 21:44:43 735 6 | */ 7 | 8 | using System; 9 | using UnityEditor; 10 | using UnityEngine; 11 | 12 | namespace WYTools.ImageCropping { 13 | public class PopupContent : PopupWindowContent { 14 | public float Width { get; set; } 15 | public float Height { get; set; } 16 | public Action OnGUIAction { get; set; } 17 | public Action OnOpenAction { get; set; } 18 | public Action OnCloseAction { get; set; } 19 | 20 | public override Vector2 GetWindowSize() => new Vector2(Width, Height); 21 | 22 | public override void OnGUI(Rect rect) => OnGUIAction?.Invoke(rect); 23 | 24 | public override void OnOpen() => OnOpenAction?.Invoke(); 25 | 26 | public override void OnClose() => OnCloseAction?.Invoke(); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Editor/PopupContent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fb56baa0c0744ad198c36152367ac9ea 3 | timeCreated: 1725976122 -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Editor/WYTools.ImageCropping.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WYTools.ImageCropping.Editor", 3 | "rootNamespace": "", 4 | "references": [], 5 | "includePlatforms": [ 6 | "Editor" 7 | ], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [], 14 | "versionDefines": [], 15 | "noEngineReferences": false 16 | } -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/Editor/WYTools.ImageCropping.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1db5b315050c4ea98fea57a9b0bbfa20 3 | timeCreated: 1720275807 -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/README.md: -------------------------------------------------------------------------------- 1 | ## ImageCropping 2 | 3 | 预览Texture对象,设置裁剪区域,设置圆角,预览裁剪后图片,保存为新文件。 4 | ![ImageCropping](Captures~/ImageCropping.gif) 5 | * 以三种方式展示裁剪框数值。 6 | * 在带标尺和滚动条的视口中展示原图。 7 | * 拖动裁剪框边缘可以调整裁剪框,拖动到视口边缘可以自动滚动视口。 8 | * 拖动视口其他位置可以移动整个视口位置,在视口中滚动鼠标滚轮可以缩放视口。 9 | * 支持快捷缩放和快捷设置裁剪区域。 10 | * 两种方式(普通圆角矩形、小米Logo)设置裁剪后的图片的圆角。 11 | * 可实时预览裁剪后的图片。 12 | * 可保存裁剪后的图片到新文件。 -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ed23ed20fcae49d88ee5c245462a18a3 3 | timeCreated: 1720798789 -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.wy.tools.image-cropping", 3 | "displayName": "WYTools.ImageCropping", 4 | "version": "0.1.1", 5 | "description": "预览Texture对象,设置裁剪区域,设置圆角,预览裁剪后图片,保存为新文件。" 6 | 7 | } -------------------------------------------------------------------------------- /Assets/Tools/ImageCropping/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 460323cdb90408a439058eb7d1b7723e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6d34288f367128a4eb920b801b6f7710 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Captures~/AssetsDeepCloner.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/ReferenceReplace/Captures~/AssetsDeepCloner.gif -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Captures~/ReferenceReplace.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/ReferenceReplace/Captures~/ReferenceReplace.gif -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Documentation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0455b4d9c1c934f4a954be28251254d4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Documentation/AssetsDeepCloner.md: -------------------------------------------------------------------------------- 1 | ## AssetsDeepCloner 2 | 3 | * 深拷贝资产——对多个目标资产建立副本,并在副本中保留相互之间的引用关系,而不是引用原文件。 4 | 实现方式: 5 | 1. 将所有原资产的GUID与new出来的新GUID一对一建立映射关系。 6 | 2. 将原资产文件和对应的meta文件克隆。 7 | 3. 根据映射关系,将修改克隆得到的meta文件内的GUID改为新的GUID。 8 | 4. 在克隆得到的资产文件内搜索原资产的GUID并替换为新GUID。 9 | * 在需要拷贝的单个或若干个资产处右键,点击「克隆(复制内部依赖)」,即可进行深拷贝。 -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Documentation/AssetsDeepCloner.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bde52c88d53c424980a549c15f47614a 3 | timeCreated: 1724856883 -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Documentation/ReferenceReplace.md: -------------------------------------------------------------------------------- 1 | ## ReferenceReplace 2 | 3 | * **映射列表:** 保存替换前与替换后对象的映射关系。**(本工具不是把列表左边替换为列表右边,而是把对列表左边的引用替换为对列表右边的引用)** 4 | * 原引用可以重复,但以排在列表前面的为准。 5 | * 映射关系可以冗余,替换时若找不到则跳过。 6 | * **交换按钮:** 在列表标题栏「原引用」与「替换为」之间的按钮,点击可以交换整个列表的左右两边。 7 | * **详情:** 8 | * 列表行左右两边对象的类型毫无关系时,会出现警告图标,提示检查对象类型。 9 | * 列表行左右两边对象都是GameObject时,会出现按钮,点击可将两个GameObject都拥有的组件加入映射列表。 10 | * **列表支持拖放:** 11 | * 可在Project或Hierarchy窗口选中多个对象,拖放到列表左半边或者右半边非ObjectField处,列表高亮区域将被覆盖。 12 | * 拖放时按住Ctrl键,改为插入模式,选中的对象将被插入列表指定位置。 13 | * **「清空列表」按钮:** 用于快捷清空整个列表。 14 | * ~~「全选左边」、「选中对象覆盖到左边」、「全选右边」、「选中对象覆盖到右边」四个按钮:用于快捷操作列表:~~ 15 | ~~* 点击「全选左边」按钮,继续选中想要添加的对象,点击「选中对象覆盖到左边」按钮,新选中的对象将添加到列表末尾「原引用」列。~~ 16 | ~~* 点击「全选右边」按钮,继续选中想要添加的对象,点击「选中对象覆盖到右边」按钮,新选中的对象将添加到列表末尾「替换为」列。~~ 17 | * **操作目标:** 可以是场景内的GameObject,也可以是一个文件夹或资产文件。 18 | * 如果目标是个场景内对象,则通过遍历引用进行替换。 19 | * 如果目标是个以 YAML 格式储存的资产文件,则以文本形式打开文件,搜索GUID和FileID并替换保存。 20 | * 如果目标是个非Unity序列化资产文件,则以文本形式打开meta文件,搜索GUID和FileID并替换保存。 21 | * 如果目标是个文件夹,则遍历文件夹内所有文件,对每个资产文件进行操作。 22 | * **「替换引用」按钮:** 对目标执行操作。 23 | * ~~「生成副本并替换」按钮:先生成目标文件的副本,然后对副本进行修改。~~ 24 | ~~* 如果替换目标是一个序列化为文本的资产,则根据一定的命名规则新建副本,然后对副本进行修改。~~ 25 | ~~* 如果替换目标是一个文件夹,则根据一定的命名规则新建一个文件夹,按对应路径为所有原目录下可操作的资产新建副本,然后对所有副本进行修改。~~ -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Documentation/ReferenceReplace.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 73730bbd7958eb042b6ec2703dd21ed2 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 003255cbaf8a87b42af95dd4b3594c41 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Editor/AssetsDeepCloner.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6b2d9aaa9b454364ab19b424e828cc6a 3 | timeCreated: 1723564219 -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Editor/ReferenceReplace.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: af7fe61f971c4806a90bcd1ae65b38ee 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Editor/Utility.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7e47965847d24d68bf9216a98ef5fcce 3 | timeCreated: 1723523385 -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Editor/WYTools.ReferenceReplace.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WYTools.ReferenceReplace.Editor", 3 | "rootNamespace": "", 4 | "references": [], 5 | "includePlatforms": [ 6 | "Editor" 7 | ], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [], 14 | "versionDefines": [], 15 | "noEngineReferences": false 16 | } -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/Editor/WYTools.ReferenceReplace.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c8fdfad30d444d4ab4cdea7c646b282e 3 | timeCreated: 1721155996 -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/README.md: -------------------------------------------------------------------------------- 1 | ## ReferenceReplace 2 | 3 | 设置一组映射关系列表,将目标内所有对列表左边的引用替换为列表右边。 4 | 如果目标是个场景内对象,则通过遍历引用进行替换。 5 | 如果目标是个资源文件,则通过文本替换的方式替换对应GUID和FileID。 6 | 如果目标是个文件夹,则遍历文件夹里所有资源文件进行替换。 7 | ![ReferenceReplace](Captures~/ReferenceReplace.gif) 8 | * **列表:** 原引用和替换为的映射表。**(本工具不是把列表左边替换为列表右边,而是把对列表左边的引用替换为对列表右边的引用)** 9 | * **交换按钮:** 在列表标题栏「原引用」与「替换为」之间的按钮,点击可以交换整个列表的左右两边。 10 | * **详情:** 11 | * 列表行左右两边对象的类型毫无关系时,会出现警告图标,提示检查对象类型。 12 | * 列表行左右两边对象都是GameObject时,会出现按钮,点击可将两个GameObject都拥有的组件加入映射列表。 13 | * **列表支持拖放:** 14 | * 可选中多个对象,拖放到列表左半边或者右半边非ObjectField处,列表高亮区域将被覆盖。 15 | * 拖放时按住Ctrl键,变为插入模式,选中的对象将被插入列表指定位置。 16 | * **操作目标:** 可以是场景内的GameObject,也可以是一个文件夹或资产文件。 17 | * 如果目标是个场景内对象,则通过遍历引用进行替换。 18 | * 如果目标是个以 YAML 格式储存的资产文件,则以文本形式打开文件,搜索GUID和FileID并替换保存。 19 | * 如果目标是个非Unity序列化资产文件,则以文本形式打开meta文件,搜索GUID和FileID并替换保存。 20 | * 如果目标是个文件夹,则遍历文件夹内所有文件,对每个资产文件进行操作。 21 | 22 | ## AssetsDeepCloner 23 | 24 | 深拷贝资产——对多个目标资产建立副本,并在副本中保留相互之间的引用关系,而不是引用原文件。 25 | 实现方式: 26 | 1. 将所有原资产的GUID与new出来的新GUID一对一建立映射关系。 27 | 2. 将原资产文件和对应的meta文件克隆。 28 | 3. 根据映射关系,将修改克隆得到的meta文件内的GUID改为新的GUID。 29 | 4. 在克隆得到的资产文件内搜索原资产的GUID并替换为新GUID。 30 | ![AssetsDeepCloner](Captures~/AssetsDeepCloner.gif) 31 | 在需要拷贝的单个或若干个资产处右键,点击「克隆(复制内部依赖)」,即可进行深拷贝。 -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 00fe44c413677a041ae8c659378c7ad6 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.wy.tools.reference-replace", 3 | "displayName": "WYTools.ReferenceReplace", 4 | "version": "0.3.0", 5 | "description": "设置一组映射关系列表,将目标内所有对列表左边的引用替换为列表右边。\n如果目标是个场景内对象,则通过遍历引用进行替换。\n如果目标是个以 YAML 格式储存的资产文件,则以文本形式打开文件,搜索GUID并替换保存。\n如果目标是个文件夹,则遍历文件夹内所有文件,对每个 YAML 格式储存的资产文件进行操作。\n\n另外,还在资产右键菜单提供了资产深拷贝功能,可对多个目标资产建立副本,并在副本中保留相互之间的引用关系,而不是引用原文件。" 6 | 7 | } -------------------------------------------------------------------------------- /Assets/Tools/ReferenceReplace/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3b785e0414f740b429ea5809f89aca12 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/SpriteAtlasInspector.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 180d677ee87fc864ea782909a5e2454a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/SpriteAtlasInspector/Captures~/SpriteAtlasInspector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/SpriteAtlasInspector/Captures~/SpriteAtlasInspector.png -------------------------------------------------------------------------------- /Assets/Tools/SpriteAtlasInspector/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 415311dae4b139e459a4f4acfade40ef 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/SpriteAtlasInspector/Editor/SpriteAtlasImporterInspector.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b11cb059145f4ea597ff0b0d0b57e569 3 | timeCreated: 1689660658 -------------------------------------------------------------------------------- /Assets/Tools/SpriteAtlasInspector/Editor/SpriteAtlasInspector.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 404f8f0a79ed4166bceed94dac43f6e9 3 | timeCreated: 1687343285 -------------------------------------------------------------------------------- /Assets/Tools/SpriteAtlasInspector/Editor/WYTools.SpriteAtlasInspector.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WYTools.SpriteAtlasInspector.Editor", 3 | "rootNamespace": "", 4 | "references": [], 5 | "includePlatforms": [ 6 | "Editor" 7 | ], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [], 14 | "versionDefines": [], 15 | "noEngineReferences": false 16 | } -------------------------------------------------------------------------------- /Assets/Tools/SpriteAtlasInspector/Editor/WYTools.SpriteAtlasInspector.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ba5c4ab5d2a40a480c7d8a98e1ad00d 3 | timeCreated: 1721156029 -------------------------------------------------------------------------------- /Assets/Tools/SpriteAtlasInspector/README.md: -------------------------------------------------------------------------------- 1 | ## SpriteAtlasInspector 2 | 3 | 在SpriteAtlas检视面板末尾区域新增「去重」、「深入文件夹去重」、「清空列表」、「添加选中对象」四个按钮。 4 | ![SpriteAtlasInspector](Captures~/SpriteAtlasInspector.png) 5 | * **去重:** 去除列表中重复的项。 6 | * **深入文件夹去重:** 列表中的文件夹如果包含列表中的其他项,也将去除重复的项。 7 | * **清空列表:** 清空列表。 8 | * **添加选中对象:** 将当前选中的所有对象添加到列表末尾。 -------------------------------------------------------------------------------- /Assets/Tools/SpriteAtlasInspector/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eb947e662a292424889b61370eb7e834 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/SpriteAtlasInspector/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.wy.tools.sprite-atlas-inspector", 3 | "displayName": "WYTools.SpriteAtlasInspector", 4 | "version": "0.1.1", 5 | "description": "在SpriteAtlas检视面板末尾区域新增「去重」、「深入文件夹去重」、「清空列表」、「添加选中对象」四个按钮。" 6 | 7 | } -------------------------------------------------------------------------------- /Assets/Tools/SpriteAtlasInspector/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5245cee009dc8a74db8e06d40f022a5a 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4d424671f878010468299bb53fda8114 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector/Captures~/RectTransformInspector.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/TransformInspector/Captures~/RectTransformInspector.gif -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector/Captures~/TransformInspector.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/TransformInspector/Captures~/TransformInspector.gif -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dbb1237aee5d7bb4e8a293812ebe9adf 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector/Editor/RectTransformInspector.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 321244fae576435f917b6c76bfb74651 3 | timeCreated: 1684315774 -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector/Editor/TransformInspector.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: d0724fdb20f64f3cafce384f6b40a3ac 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector/Editor/WYTools.TransformInspector.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WYTools.TransformInspector.Editor", 3 | "rootNamespace": "", 4 | "references": [], 5 | "includePlatforms": [ 6 | "Editor" 7 | ], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [], 14 | "versionDefines": [], 15 | "noEngineReferences": false 16 | } -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector/Editor/WYTools.TransformInspector.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f9baadafd3464fff98650ca05b75f034 3 | timeCreated: 1721156054 -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector/README.md: -------------------------------------------------------------------------------- 1 | ## TransformInspector 2 | 3 | 在Transform检视面板最左侧区域新增右键菜单,添加「重置」、「保留2位小数」、「显示Global」三个功能。 4 | 在RectTransform检视面板末尾区域新增「保留整数」、「保留2位小数」两个按钮。 5 | ![TransformInspector](Captures~/TransformInspector.gif) 6 | ![RectTransformInspector](Captures~/RectTransformInspector.gif) -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 063281500908d02439ff056888857461 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.wy.tools.transform-inspector", 3 | "displayName": "WYTools.TransformInspector", 4 | "version": "0.1.1", 5 | "description": "在Transform检视面板最左侧区域新增右键菜单,添加「重置」、「保留2位小数」、「显示Global」三个功能。\n在RectTransform检视面板末尾区域新增「保留整数」、「保留2位小数」两个按钮。" 6 | 7 | } -------------------------------------------------------------------------------- /Assets/Tools/TransformInspector/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: af2f2927627a6034280868e971bcac27 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2385478b2bf84494a848cdf36a313dc1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Captures~/SearchComponent.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/TransformSearch/Captures~/SearchComponent.gif -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Captures~/SearchReferenceInScene.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/TransformSearch/Captures~/SearchReferenceInScene.gif -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Documentation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6f60d346479d1b64e888f873eaab52a2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Documentation/TransformSearch.md: -------------------------------------------------------------------------------- 1 | ## TransformSearch 2 | 3 | 待补充 -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Documentation/TransformSearch.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 77583e8394da53844bf046dad5db3eef 3 | timeCreated: 1719853636 -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c56c6835567b2254eb8f6dc7386281d6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Editor/BaseSearch.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ce779b6e1014e21a776eb7c62146ae3 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Editor/SearchComponent.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wangyun 3 | * @CreateTime: 2022-05-02 01:13:30 495 4 | * @LastEditor: wangyun 5 | * @EditTime: 2022-05-04 01:51:33 841 6 | */ 7 | 8 | using System; 9 | using System.Collections.Generic; 10 | using System.Reflection; 11 | using UnityEngine; 12 | using UnityEditor; 13 | 14 | using UObject = UnityEngine.Object; 15 | 16 | namespace WYTools.TransformSearch { 17 | public class SearchComponent : BaseSearch { 18 | [MenuItem("Tools/WYTools/TransformSearch/SearchComponent")] 19 | private static void Init() { 20 | SearchComponent window = GetWindow("ComponentSearch"); 21 | window.minSize = new Vector2(200F, 200F); 22 | window.Show(); 23 | } 24 | 25 | [SerializeField] 26 | private string m_ComponentName; 27 | private Type m_ComponentType; 28 | 29 | protected override void OnEnable() { 30 | base.OnEnable(); 31 | m_ComponentName = EditorPrefs.GetString(GetType().FullName + ".ComponentName"); 32 | } 33 | 34 | protected override List Match(Transform trans) { 35 | List comps = new List(); 36 | foreach (var comp in trans.GetComponents()) { 37 | if (comp) { 38 | Type type = comp.GetType(); 39 | if (m_ComponentType != null) { 40 | if (m_ComponentType.IsAssignableFrom(type)) { 41 | comps.Add(comp); 42 | } 43 | } else if (type.Name == m_ComponentName) { 44 | comps.Add(comp); 45 | } 46 | } else { 47 | Debug.LogError(trans, trans.root.gameObject); 48 | } 49 | } 50 | return comps; 51 | } 52 | 53 | protected override void DrawHeader() { 54 | GUILayout.BeginHorizontal(); 55 | DrawComponentName(); 56 | if (Selection.activeObject is MonoScript script) { 57 | Type type = script.GetClass(); 58 | if (type != null) { 59 | string typeName = type.Name; 60 | string fullName = type.FullName; 61 | if (m_ComponentName != typeName && m_ComponentName != fullName) { 62 | if (GUILayout.Button(typeName, GUILayout.ExpandWidth(false))) { 63 | m_ComponentName = fullName; 64 | } 65 | } 66 | } 67 | } 68 | if (GUILayout.Button("搜索", GUILayout.Width(60F))) { 69 | m_ComponentType = NameToType(m_ComponentName); 70 | Search(); 71 | } 72 | GUILayout.EndHorizontal(); 73 | } 74 | 75 | protected void DrawComponentName() { 76 | GUILayout.BeginHorizontal(); 77 | EditorGUIUtility.labelWidth = 70F; 78 | string newComponentName = EditorGUILayout.TextField("Comp Name", m_ComponentName); 79 | if (newComponentName != m_ComponentName) { 80 | Undo.RecordObject(this, "ComponentName"); 81 | m_ComponentName = newComponentName; 82 | EditorPrefs.SetString(GetType().FullName + ".ComponentName", m_ComponentName); 83 | } 84 | GUILayout.EndHorizontal(); 85 | } 86 | 87 | protected static Type NameToType(string typeName) { 88 | Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); 89 | foreach (Assembly assembly in assemblies) { 90 | Type type = assembly.GetType(typeName); 91 | if (type != null) { 92 | return type; 93 | } 94 | } 95 | return null; 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Editor/SearchComponent.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e453d50892c94358ac81b34c037451af 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Editor/SearchLayer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wangyun 3 | * @CreateTime: 2022-07-26 18:47:11 750 4 | * @LastEditor: wangyun 5 | * @EditTime: 2022-07-26 18:47:11 754 6 | */ 7 | 8 | using System; 9 | using System.Collections.Generic; 10 | using System.Reflection; 11 | using UnityEngine; 12 | using UnityEditor; 13 | 14 | using UObject = UnityEngine.Object; 15 | 16 | namespace WYTools.TransformSearch { 17 | public class SearchLayer : BaseSearch { 18 | [MenuItem("Tools/WYTools/TransformSearch/SearchLayer")] 19 | private static void Init() { 20 | SearchLayer window = GetWindow("LayerSearch"); 21 | window.minSize = new Vector2(200F, 200F); 22 | window.Show(); 23 | } 24 | 25 | [SerializeField] 26 | private uint m_LayerMask; 27 | 28 | protected override void OnEnable() { 29 | base.OnEnable(); 30 | m_LayerMask = (uint) EditorPrefs.GetInt(GetType().FullName + ".LayerMask"); 31 | } 32 | 33 | protected override List Match(Transform trans) { 34 | List comps = new List(); 35 | if (((1 << trans.gameObject.layer) & m_LayerMask) > 0) { 36 | comps.Add(trans); 37 | } 38 | return comps; 39 | } 40 | 41 | protected override void DrawHeader() { 42 | GUILayout.BeginHorizontal(); 43 | DrawLayer(); 44 | if (GUILayout.Button("搜索", GUILayout.Width(60F))) { 45 | Search(); 46 | } 47 | GUILayout.EndHorizontal(); 48 | } 49 | 50 | protected void DrawLayer() { 51 | string[] displayedOptions = new string[31]; 52 | for (int i = 0, length = displayedOptions.Length; i < length; i++) { 53 | displayedOptions[i] = i + ":" + LayerMask.LayerToName(i); 54 | } 55 | 56 | EditorGUIUtility.labelWidth = 40F; 57 | // m_LayerMask = EditorGUILayout.LayerMaskField(m_LayerMask, "Layer"); 58 | MethodInfo mi = typeof(EditorGUILayout).GetMethod("LayerMaskField", BindingFlags.Static | BindingFlags.NonPublic, 59 | null, new []{ typeof(uint), typeof(GUIContent), typeof(GUILayoutOption[]) }, null); 60 | uint newLayerMask = (uint) (mi?.Invoke(null, new object[] { m_LayerMask, new GUIContent("Layer"), Array.Empty() }) ?? 0); 61 | if (newLayerMask != m_LayerMask) { 62 | Undo.RecordObject(this, "LayerMask"); 63 | m_LayerMask = newLayerMask; 64 | EditorPrefs.SetInt(GetType().FullName + ".LayerMask", (int) m_LayerMask); 65 | Debug.Log(m_LayerMask); 66 | } 67 | } 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Editor/SearchLayer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e31e51192fe5486493409a17f95b004b 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Editor/SearchReferenceInScene.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c6869bb38a5f4f3394f71622410e0a60 3 | timeCreated: 1681643511 -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Editor/SearchReferenceInSceneBySO.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 50c1d169b6d84d69a99854f7fbede1a8 3 | timeCreated: 1688382704 -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/README.md: -------------------------------------------------------------------------------- 1 | ## TransformSearch 2 | 3 | 内含多种搜索,搜索结果以节点树的形式呈现。 4 | 可继续扩展搜索条件。 5 | ![SearchReferenceInScene](Captures~/SearchReferenceInScene.gif) 6 | ![SearchComponent](Captures~/SearchComponent.gif) 7 | * **组件搜索:** 以选中目标为搜索范围(支持多选,支持Prefab编辑场景,支持Prefab资产),将范围内所有匹配的组件显示出来。 8 | * 选中某个组件脚本,可以出现自动填入类名的按钮。 9 | * 当以完整类名(Assembly.GetType返回不为null)搜索时,以Type对象进行搜索,搜索结果包括派生类对象。 10 | * 当以非完整类名(有命名空间,却未带命名空间)搜索时,以类名字符串进行搜索,搜索结果可能包括不同命名空间的相同类名对象,但不包括派生类对象。 11 | * **Layer搜索:** 以选中目标为搜索范围(支持多选,支持Prefab编辑场景,支持Prefab资产),将范围内所有匹配的节点显示出来。 12 | * **场景中引用搜索:** 以整个场景为搜索范围(支持Prefab编辑场景),将范围内所有引用到所选对象(支持多选)的组件显示出来。 -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 043d31ee0e16ef14abbfaebdbec0ffdd 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Samples~/ExtensionForLuaBehaviour/.sample.json: -------------------------------------------------------------------------------- 1 | { 2 | "displayName": "Extension For LuaBehaviour", 3 | "description": "TransformSearch for LuaBehaviour, not sample.", 4 | "createSeparatePackage": false 5 | } -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/Samples~/ExtensionForLuaBehaviour/Editor/SearchLuaBehaviour.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4ad72bd2c8cc4aa19e26cbbc5e01dc30 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/WYTools.TransformSearch.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WYTools.TransformSearch.Editor", 3 | "rootNamespace": "", 4 | "references": [], 5 | "includePlatforms": [ 6 | "Editor" 7 | ], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [], 14 | "versionDefines": [], 15 | "noEngineReferences": false 16 | } -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/WYTools.TransformSearch.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 980bef0ea42d44968ce8db1191647433 3 | timeCreated: 1721156070 -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.wy.tools.transform-search", 3 | "displayName": "WYTools.TransformSearch", 4 | "version": "0.1.1", 5 | "description": "内含多种搜索,搜索结果以节点树的形式呈现。\n可继续扩展搜索条件。\n\n组件搜索: 以选中目标为搜索范围(支持多选,支持Prefab编辑场景,支持Prefab资产),将范围内所有匹配的组件显示出来。\n\nLayer搜索:以选中目标为搜索范围(支持多选,支持Prefab编辑场景,支持Prefab资产),将范围内所有匹配的节点显示出来。\n\n场景中引用搜索:以整个场景为搜索范围(支持Prefab编辑场景),将范围内所有引用到所选对象(支持多选)的组件显示出来。", 6 | "samples": [ 7 | { 8 | "displayName": "Extension For LuaBehaviour", 9 | "description": "TransformSearch for LuaBehaviour, not sample.", 10 | "path": "Samples~/ExtensionForLuaBehaviour" 11 | } 12 | ] 13 | 14 | } -------------------------------------------------------------------------------- /Assets/Tools/TransformSearch/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b3e76e5331671d84bbc87bc2cd2ea93d 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3e1323f21fdcd694d8335af76f7d3dd4 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/README.md: -------------------------------------------------------------------------------- 1 | ## UGUI扩展 2 | 3 | 慢慢添加中。 4 | * **ImageAnimation:** 将多个Sprite以序列帧的形式播放。 5 | * **RawImageAnimation:** 将多个Texture以序列帧的形式播放。 6 | * **OutlineMellow:** 支持调节层数,从而实现更圆滑的描边。 7 | * **TemplateText:** 以模板形式赋值文本框,从而实现把文案留在UI界面中,而代码单独控制文案中的变量。 8 | * **ContentSizeFitterExt:** 增加最大宽高和最小宽高功能,可实现文本框尺寸在字少的时候横向适应文本宽度,字多的时候纵向适应行数的需求。 -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2637afb027409c24ea35898236695a93 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5f64b021692cdbb4e937fade22d2c250 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/ContentSizeFitterExt.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wangyun 3 | * @CreateTime: 2023-01-05 16:43:40 677 4 | * @LastEditor: wangyun 5 | * @EditTime: 2023-01-05 16:43:40 681 6 | */ 7 | 8 | using System; 9 | 10 | namespace UnityEngine.UI { 11 | [AddComponentMenu("Layout/Content Size Fitter Ext", 141)] 12 | [ExecuteAlways] 13 | [RequireComponent(typeof(RectTransform))] 14 | public class ContentSizeFitterExt : ContentSizeFitter { 15 | [SerializeField] protected float m_MinWidth; 16 | public float minWidth { 17 | get => m_MinWidth; 18 | set { 19 | if (!Mathf.Approximately(m_MinWidth, value)) { 20 | m_MinWidth = value; 21 | SetDirty(); 22 | } 23 | } 24 | } 25 | 26 | [SerializeField] protected float m_MinHeight; 27 | public float minHeight { 28 | get => m_MinHeight; 29 | set { 30 | if (!Mathf.Approximately(m_MinHeight, value)) { 31 | m_MinHeight = value; 32 | SetDirty(); 33 | } 34 | } 35 | } 36 | 37 | [SerializeField] protected float m_MaxWidth; 38 | public float maxWidth { 39 | get => m_MaxWidth; 40 | set { 41 | if (!Mathf.Approximately(m_MaxWidth, value)) { 42 | m_MaxWidth = value; 43 | SetDirty(); 44 | } 45 | } 46 | } 47 | 48 | [SerializeField] protected float m_MaxHeight; 49 | public float maxHeight { 50 | get => m_MaxHeight; 51 | set { 52 | if (!Mathf.Approximately(m_MaxHeight, value)) { 53 | m_MaxHeight = value; 54 | SetDirty(); 55 | } 56 | } 57 | } 58 | 59 | [NonSerialized] private RectTransform m_Rect; 60 | private RectTransform rectTransform { 61 | get { 62 | if (m_Rect == null) 63 | m_Rect = GetComponent(); 64 | return m_Rect; 65 | } 66 | } 67 | 68 | private DrivenRectTransformTracker m_Tracker; 69 | 70 | private void HandleSelfFittingAlongAxis(int axis) { 71 | FitMode fitting = (axis == 0 ? horizontalFit : verticalFit); 72 | if (fitting == FitMode.Unconstrained) { 73 | // Keep a reference to the tracked transform, but don't control its properties: 74 | m_Tracker.Add(this, rectTransform, DrivenTransformProperties.None); 75 | return; 76 | } 77 | 78 | m_Tracker.Add(this, rectTransform, 79 | (axis == 0 ? DrivenTransformProperties.SizeDeltaX : DrivenTransformProperties.SizeDeltaY)); 80 | 81 | // Set size to min or preferred size 82 | float size = fitting == FitMode.MinSize ? LayoutUtility.GetMinSize(m_Rect, axis) : 83 | LayoutUtility.GetPreferredSize(m_Rect, axis); 84 | switch (axis) { 85 | case 0: 86 | if (maxWidth > 0 && size > maxWidth) { 87 | size = maxWidth; 88 | } 89 | if (minWidth > 0 && size < minWidth) { 90 | size = minWidth; 91 | } 92 | break; 93 | case 1: 94 | if (maxHeight > 0 && size > maxHeight) { 95 | size = maxHeight; 96 | } 97 | if (minHeight > 0 && size < minHeight) { 98 | size = minHeight; 99 | } 100 | break; 101 | } 102 | rectTransform.SetSizeWithCurrentAnchors((RectTransform.Axis) axis, size); 103 | } 104 | 105 | public override void SetLayoutHorizontal() { 106 | m_Tracker.Clear(); 107 | HandleSelfFittingAlongAxis(0); 108 | } 109 | 110 | public override void SetLayoutVertical() { 111 | HandleSelfFittingAlongAxis(1); 112 | } 113 | } 114 | } 115 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/ContentSizeFitterExt.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a11767405dfe45d88c8a084d2949f186 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/ImageAnimation.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wangyun 3 | * @CreateTime: 2022-08-10 00:53:45 448 4 | * @LastEditor: wangyun 5 | * @EditTime: 2022-08-10 00:53:45 453 6 | */ 7 | 8 | using System.Collections.Generic; 9 | 10 | namespace UnityEngine.UI { 11 | [AddComponentMenu("UI/Effects/Image Animation", 15)] 12 | [RequireComponent(typeof(Image))] 13 | public class ImageAnimation : MonoBehaviour { 14 | public int frameRate = 30; 15 | public int currentFrame; 16 | public float speed = 1; 17 | public bool loop; 18 | public List spriteFrames = new List(); 19 | 20 | public int FrameRate { get => frameRate; set => frameRate = value; } 21 | public int CurrentFrame { get => currentFrame; set => currentFrame = value; } 22 | public float Speed { get => speed; set => speed = value; } 23 | public bool Loop { get => loop; set => loop = value; } 24 | 25 | private Image m_ImageSource; 26 | private float m_Time; 27 | 28 | private void Update() { 29 | int spriteCount = spriteFrames.Count; 30 | if (spriteCount > 0) { 31 | int playDirection = (int) Mathf.Sign(speed); 32 | float unsignedSpeed = Mathf.Abs(speed); 33 | m_Time += Time.deltaTime * unsignedSpeed; 34 | float interval = 1F / frameRate; 35 | if (m_Time > interval) { 36 | m_Time -= interval; 37 | currentFrame += playDirection; 38 | if (loop) { 39 | currentFrame %= spriteCount; 40 | if (currentFrame < 0) { 41 | currentFrame += spriteCount; 42 | } 43 | } else { 44 | currentFrame = Mathf.Min(currentFrame, spriteCount - 1); 45 | } 46 | Sprite sprite = null; 47 | for (int i = currentFrame; i >= 0 && !sprite; --i) { 48 | sprite = spriteFrames[i]; 49 | } 50 | if (!m_ImageSource) { 51 | m_ImageSource = GetComponent(); 52 | } 53 | m_ImageSource.sprite = sprite; 54 | } 55 | } 56 | } 57 | 58 | private void OnValidate() { 59 | frameRate = Mathf.Max(frameRate, 1); 60 | int spriteCount = spriteFrames.Count; 61 | if (spriteCount > 0) { 62 | currentFrame = Mathf.Clamp(currentFrame, 0, spriteCount - 1); 63 | Sprite sprite = null; 64 | for (int i = currentFrame; i >= 0 && !sprite; --i) { 65 | sprite = spriteFrames[i]; 66 | } 67 | if (!m_ImageSource) { 68 | m_ImageSource = GetComponent(); 69 | } 70 | m_ImageSource.sprite = sprite; 71 | } 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/ImageAnimation.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eace350fad1241b980f34e876bdd0c3d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/OutlineMellow.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a4808a23fdd14a9a9a3fa099d5c6c282 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/RawImageAnimation.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wangyun 3 | * @CreateTime: 2022-08-10 00:53:45 448 4 | * @LastEditor: wangyun 5 | * @EditTime: 2022-08-10 00:53:45 453 6 | */ 7 | 8 | using System.Collections.Generic; 9 | 10 | namespace UnityEngine.UI { 11 | [AddComponentMenu("UI/Effects/Raw Image Animation", 15)] 12 | [RequireComponent(typeof(RawImage))] 13 | public class RawImageAnimation : MonoBehaviour { 14 | public int frameRate = 30; 15 | public int currentFrame; 16 | public float speed = 1; 17 | public bool loop; 18 | public List textureFrames = new List(); 19 | 20 | public int FrameRate { get => frameRate; set => frameRate = value; } 21 | public int CurrentFrame { get => currentFrame; set => currentFrame = value; } 22 | public float Speed { get => speed; set => speed = value; } 23 | public bool Loop { get => loop; set => loop = value; } 24 | 25 | private RawImage m_RawImageSource; 26 | private float m_Time; 27 | 28 | private void Update() { 29 | int spriteCount = textureFrames.Count; 30 | if (spriteCount > 0) { 31 | int playDirection = (int) Mathf.Sign(speed); 32 | float unsignedSpeed = Mathf.Abs(speed); 33 | m_Time += Time.deltaTime * unsignedSpeed; 34 | float interval = 1F / frameRate; 35 | if (m_Time > interval) { 36 | m_Time -= interval; 37 | currentFrame += playDirection; 38 | if (loop) { 39 | currentFrame %= spriteCount; 40 | if (currentFrame < 0) { 41 | currentFrame += spriteCount; 42 | } 43 | } else { 44 | currentFrame = Mathf.Min(currentFrame, spriteCount - 1); 45 | } 46 | Texture tex = null; 47 | for (int i = currentFrame; i >= 0 && !tex; --i) { 48 | tex = textureFrames[i]; 49 | } 50 | if (!m_RawImageSource) { 51 | m_RawImageSource = GetComponent(); 52 | } 53 | m_RawImageSource.texture = tex; 54 | } 55 | } 56 | } 57 | 58 | private void OnValidate() { 59 | frameRate = Mathf.Max(frameRate, 1); 60 | int spriteCount = textureFrames.Count; 61 | if (spriteCount > 0) { 62 | currentFrame = Mathf.Clamp(currentFrame, 0, spriteCount - 1); 63 | Texture tex = null; 64 | for (int i = currentFrame; i >= 0 && !tex; --i) { 65 | tex = textureFrames[i]; 66 | } 67 | if (!m_RawImageSource) { 68 | m_RawImageSource = GetComponent(); 69 | } 70 | m_RawImageSource.texture = tex; 71 | } 72 | } 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/RawImageAnimation.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 996794e1554e41a5b7713fd913dc344f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/TemplateText.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wangyun 3 | * @CreateTime: 2022-07-02 14:10:46 489 4 | * @LastEditor: wangyun 5 | * @EditTime: 2022-07-02 14:10:46 501 6 | */ 7 | 8 | namespace UnityEngine.UI { 9 | [AddComponentMenu("UI/Effects/Template Text", 15)] 10 | [RequireComponent(typeof(Text))] 11 | public class TemplateText : TemplateTextBase { 12 | private Text m_CompText; 13 | public Text CompText { 14 | get { 15 | if (m_CompText == null) { 16 | m_CompText = GetComponent(); 17 | } 18 | return m_CompText; 19 | } 20 | } 21 | 22 | [ContextMenu("Apply")] 23 | public override void Apply() { 24 | CompText.text = FinalText; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/TemplateText.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 71087ff5e6ab4b6e8080071a105c21db 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/TemplateTextBase.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wangyun 3 | * @CreateTime: 2023-02-18 17:16:15 439 4 | * @LastEditor: wangyun 5 | * @EditTime: 2023-02-18 17:16:15 444 6 | */ 7 | 8 | using System.Text; 9 | using System.Collections.Generic; 10 | using System.Text.RegularExpressions; 11 | 12 | namespace UnityEngine.UI { 13 | public class TemplateTextBase : MonoBehaviour { 14 | [Tooltip("示例:“剩余数量:{leftCount=1}”")] 15 | [TextArea(3, 10)] 16 | [SerializeField] 17 | protected string m_Text = string.Empty; 18 | 19 | public string text { 20 | get => m_Text; 21 | set { 22 | if (string.IsNullOrEmpty(value)) { 23 | if (!string.IsNullOrEmpty(m_Text)) { 24 | m_Text = string.Empty; 25 | Apply(); 26 | } 27 | } else { 28 | if (m_Text != value) { 29 | m_Text = value; 30 | Apply(); 31 | } 32 | } 33 | } 34 | } 35 | 36 | [SerializeField, HideInInspector] 37 | private List m_VariateNames = new List(); 38 | [SerializeField, HideInInspector] 39 | private List m_VariateValues = new List(); 40 | public Dictionary Variates { 41 | get { 42 | Dictionary dict = new Dictionary(); 43 | for (int i = 0, kLen = m_VariateNames.Count; i < kLen; ++i) { 44 | dict[m_VariateNames[i]] = m_VariateValues[i]; 45 | } 46 | return dict; 47 | } 48 | set { 49 | m_VariateNames.Clear(); 50 | m_VariateValues.Clear(); 51 | if (value != null) { 52 | m_VariateNames.AddRange(value.Keys); 53 | foreach (var _value in value.Values) { 54 | m_VariateValues.Add(_value + string.Empty); 55 | } 56 | } 57 | Apply(); 58 | } 59 | } 60 | 61 | public string GetVariate(string varName) { 62 | int index = m_VariateNames.IndexOf(varName); 63 | return index == -1 ? null: m_VariateValues[index]; 64 | } 65 | public void SetVariate(string varName, object varValue) { 66 | SetVariate(varName, varValue + string.Empty); 67 | } 68 | public void SetVariate(string varName, string varValue) { 69 | int index = m_VariateNames.IndexOf(varName); 70 | if (index == -1) { 71 | m_VariateNames.Add(varName); 72 | m_VariateValues.Add(varValue); 73 | } else { 74 | m_VariateNames[index] = varName; 75 | m_VariateValues[index] = varValue; 76 | } 77 | Apply(); 78 | } 79 | 80 | public string FinalText { 81 | get { 82 | Dictionary dict = new Dictionary(); 83 | for (int i = 0, kLen = m_VariateNames.Count; i < kLen; ++i) { 84 | dict[m_VariateNames[i]] = m_VariateValues[i]; 85 | } 86 | string[] parts = Regex.Split(text, "{(.*?)=(.*?)}"); 87 | int partCount = parts.Length; 88 | StringBuilder sb = new StringBuilder(partCount - partCount / 3); 89 | for (int i = 0; i < partCount - 1; ++i) { 90 | sb.Append(parts[i]); 91 | string varName = parts[++i]; 92 | string varValue = parts[++i]; 93 | dict.TryGetValue(varName, out string overrideValue); 94 | sb.Append(overrideValue ?? varValue); 95 | } 96 | sb.Append(parts[partCount - 1]); 97 | return sb.ToString(); 98 | } 99 | } 100 | 101 | public virtual void Apply() { 102 | } 103 | 104 | private void OnValidate() { 105 | Apply(); 106 | } 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/TemplateTextBase.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2e05ceea9ded4f4bb5cf483ef41e08a2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/TemplateText_TMP.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * @Author: wangyun 3 | * @CreateTime: 2022-10-26 11:53:33 727 4 | * @LastEditor: wangyun 5 | * @EditTime: 2022-12-13 13:48:50 276 6 | */ 7 | 8 | using UnityEngine; 9 | using UnityEngine.UI; 10 | 11 | namespace TMPro { 12 | [AddComponentMenu("Mesh/Template Text(TMP)", 15)] 13 | [RequireComponent(typeof(TMP_Text))] 14 | public class TemplateText_TMP : TemplateTextBase { 15 | private TMP_Text m_CompText; 16 | public TMP_Text CompText { 17 | get { 18 | if (m_CompText == null) { 19 | m_CompText = GetComponent(); 20 | } 21 | return m_CompText; 22 | } 23 | } 24 | 25 | [ContextMenu("Apply")] 26 | public override void Apply() { 27 | CompText.text = FinalText; 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/TemplateText_TMP.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c1d92f9755f54277903c6feb612b0a45 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/WYTools.UGUIExt.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WYTools.UGUIExt", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:6055be8ebefd69e48b49212b09b47b2f" 6 | ], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [], 17 | "noEngineReferences": false 18 | } -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/Runtime/WYTools.UGUIExt.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ad20cef541d046a48b691099dc75dfe5 3 | timeCreated: 1721156133 -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.wy.tools.ugui-ext", 3 | "displayName": "WYTools.UGUIExt", 4 | "version": "0.1.1", 5 | "description": "对UGUI的一些扩展。", 6 | "dependencies": { 7 | "com.unity.ugui": "1.0.0", 8 | "com.unity.textmeshpro": "1.5.0" 9 | } 10 | 11 | } -------------------------------------------------------------------------------- /Assets/Tools/UGUIExt/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 35703dda6958543429a74518a9f6074e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/UITools.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ba260498ebfad564f87c94d7fcb227ab 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/UITools/Captures~/UITools.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Captures~/UITools.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Captures~/UIToolsIn2019.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Captures~/UIToolsIn2019.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Captures~/UIToolsIn2021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Captures~/UIToolsIn2021.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 33890c58cd53f524494150b24ccfeaf6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8e975acc2d8837047b0507f2c6903e66 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/align_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/align_bottom.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/align_center.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/align_center.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/align_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/align_left.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/align_middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/align_middle.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/align_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/align_right.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/align_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/align_top.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/average_gap_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/average_gap_h.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/average_gap_v.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/average_gap_v.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/fit_height.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/fit_height.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/fit_width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/fit_width.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/group_pack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/group_pack.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/group_unpack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/group_unpack.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/reserved1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/reserved1.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/reserved2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/reserved2.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/reserved3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/reserved3.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/reserved4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/reserved4.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/reserved5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/reserved5.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/reserved6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/reserved6.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/reserved7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/reserved7.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/reserved8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/reserved8.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/same_height.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/same_height.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Res/same_width.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Assets/Tools/UITools/Editor/Res/same_width.png -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/UITools.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7cbcce104946401089600dc5f4150dc2 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/Utility.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9bdc64a10f244040b205241633d2430b 3 | timeCreated: 1725702432 -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/WYTools.UITools.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "WYTools.UITools.Editor", 3 | "rootNamespace": "", 4 | "references": [], 5 | "includePlatforms": [ 6 | "Editor" 7 | ], 8 | "excludePlatforms": [], 9 | "allowUnsafeCode": false, 10 | "overrideReferences": false, 11 | "precompiledReferences": [], 12 | "autoReferenced": true, 13 | "defineConstraints": [], 14 | "versionDefines": [], 15 | "noEngineReferences": false 16 | } -------------------------------------------------------------------------------- /Assets/Tools/UITools/Editor/WYTools.UITools.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1d1120d9802945fa824ccaff8118a098 3 | timeCreated: 1721156101 -------------------------------------------------------------------------------- /Assets/Tools/UITools/README.md: -------------------------------------------------------------------------------- 1 | ## UITools 2 | 3 | * Unity2021.2及之后版本:在场景窗口的右上角菜单中,勾选 **Overlays/UITools** 即可出现工具栏。 4 | * 拖动工具栏头部两根线条,可以选择停靠模式或悬浮模式。 5 | * 右键工具栏头部两根线条,可以选择折叠模式或展开模式。 6 | * 悬浮模式下,右键工具栏头部两根线条,可以选择横向布局或纵向布局。 7 | * Unity2021.2之前版本:通过菜单项 **Tools/WYTools/UITools** 打开窗口。 8 | * 窗口高度大于等于100时,按钮纵向排列。 9 | * 窗口高度小于100时,按钮横向排列。 10 | 11 | 提供对齐、同宽高、贴合、成组解组、平均行间距等操作,用于更方便地编辑UGUI。 12 | 另外还提供了「图片拖入场景直接创建Image」、「方向键控制节点移动」等功能。 13 | ![UITools](Captures~/UITools.png) 14 | 下图是在Unity2021.3里的样子,停靠在Scene窗口右侧工具栏里。 15 | ![UIToolsIn2021](Captures~/UIToolsIn2021.png) 16 | 由于在Unity2021.2及以上版本才有Overlay,所以在Unity旧版本的工程中,本工具是一个EditorWindow。 17 | 下图是在Unity2019.4里的样子,停靠在Scene窗口右侧或下侧。 18 | ![UIToolsIn2019](Captures~/UIToolsIn2019.png) 19 | ### 按钮 20 | * **对齐按钮:** 分为「上」、「中」、「下」、「左」、「中」、「右」共6个按钮。 21 | 当选中单个UI节点,则将该节点与父节点对齐。当选中多个UI节点,则将其他节点与第一个节点对齐。 22 | 当按住Shift键再点击时,会同时设置节点的轴点。 23 | * **同宽高按钮:** 分为「同宽」和「同高」共2个按钮。 24 | 当选中单个UI节点,则将该节点与父节点同宽高。当选中多个UI节点,则将其他节点与第一个节点同宽高。 25 | * **贴合按钮:** 分为「水平贴合」和「竖直贴合」共2个按钮。 26 | 将选中节点的宽高设置为包裹所有子节点的最小尺寸,由于子节点的范围不一定剧中,所以会移动节点坐标。 27 | 当按住Shift键再点击时,会保持节点坐标,转而修改节点的轴点。 28 | * **组按钮:** 分为「成组」和「解组」共2个按钮。 29 | 成组:在当前位置新建一个名为「Group」节点,并将选中的一个或多个节点设为该节点的子节点。 30 | 解组:如果选中的节点名称为「Group」,则将其所有子节点设为该节点的父节点的子节点,并删除该节点。 31 | * **行间距按钮:** 分为「平均间距」和「平均行距」共2个按钮。 32 | 平均间距:以选中的多个节点的最左边节点和最右边节点为两端,平均分布节点间的间距。 33 | 平均行距:以选中的多个节点的最下边节点和最上边节点为两端,平均分布节点间的行距。 34 | 当按住Shift键再点击时,将会重新定义缝隙(广义缝隙)。 35 | * 按住「Alt」键将图片拖放到 Hierarchy窗口 内的 RectTransform 下可直接创建 Image 。(Unity2021.2及之后版本才支持。) 36 | * **注意:** 放开时,必须按住Alt键,且指针指的是一个RectTransform。否则将默认创建SpriteRenderer。 37 | * 按住「Alt」键将图片拖放到 Scene窗口 内的 Canvas框 中可直接创建 Image 。 38 | * **注意:** 放开时,必须按住Alt键,且指针指在某个Canvas框内。否则将默认创建SpriteRenderer。 39 | * 按住「Alt」键且 Scene窗口 拥有焦点时,方向键可移动 Transform 。 40 | * **注意:** Scene窗口拥有焦点时才可移动。 41 | -------------------------------------------------------------------------------- /Assets/Tools/UITools/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 65c64e571eb57c94caa8cba89029484f 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Assets/Tools/UITools/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "com.wy.tools.ui-tools", 3 | "displayName": "WYTools.UITools", 4 | "version": "0.2.2", 5 | "description": "用于更方便地编辑UGUI,由于在Unity2021.2及以上版本才有Overlay,所以在Unity旧版本的工程中,本工具是一个EditorWindow。\n\n对齐按钮、同宽高按钮、贴合按钮、组按钮、行间距按钮。\n\n按住Alt键将图片拖放到Hierarchy窗口内的RectTransform下可直接创建Image。\n按住Alt键将图片拖放到Scene窗口内的Canvas框中可直接创建Image.\n按住Alt键且Scene窗口拥有焦点时,方向键可移动Transform。" 6 | 7 | } -------------------------------------------------------------------------------- /Assets/Tools/UITools/package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a267b52d30e31a14a9febb6a14f81950 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Captures~/UPMSupport.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/Captures~/UPMSupport.png -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 举一反三小伙儿 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Packages/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "com.unity.collab-proxy": "2.0.5", 4 | "com.unity.feature.2d": "2.0.0", 5 | "com.unity.feature.development": "1.0.1", 6 | "com.unity.ide.rider": "3.0.24", 7 | "com.unity.ide.visualstudio": "2.0.18", 8 | "com.unity.ide.vscode": "1.2.5", 9 | "com.unity.test-framework": "1.1.33", 10 | "com.unity.textmeshpro": "3.0.6", 11 | "com.unity.timeline": "1.6.5", 12 | "com.unity.ugui": "1.0.0", 13 | "com.unity.upm.develop": "0.5.1", 14 | "com.unity.visualscripting": "1.8.0", 15 | "com.unity.modules.ai": "1.0.0", 16 | "com.unity.modules.androidjni": "1.0.0", 17 | "com.unity.modules.animation": "1.0.0", 18 | "com.unity.modules.assetbundle": "1.0.0", 19 | "com.unity.modules.audio": "1.0.0", 20 | "com.unity.modules.cloth": "1.0.0", 21 | "com.unity.modules.director": "1.0.0", 22 | "com.unity.modules.imageconversion": "1.0.0", 23 | "com.unity.modules.imgui": "1.0.0", 24 | "com.unity.modules.jsonserialize": "1.0.0", 25 | "com.unity.modules.particlesystem": "1.0.0", 26 | "com.unity.modules.physics": "1.0.0", 27 | "com.unity.modules.physics2d": "1.0.0", 28 | "com.unity.modules.screencapture": "1.0.0", 29 | "com.unity.modules.terrain": "1.0.0", 30 | "com.unity.modules.terrainphysics": "1.0.0", 31 | "com.unity.modules.tilemap": "1.0.0", 32 | "com.unity.modules.ui": "1.0.0", 33 | "com.unity.modules.uielements": "1.0.0", 34 | "com.unity.modules.umbra": "1.0.0", 35 | "com.unity.modules.unityanalytics": "1.0.0", 36 | "com.unity.modules.unitywebrequest": "1.0.0", 37 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0", 38 | "com.unity.modules.unitywebrequestaudio": "1.0.0", 39 | "com.unity.modules.unitywebrequesttexture": "1.0.0", 40 | "com.unity.modules.unitywebrequestwww": "1.0.0", 41 | "com.unity.modules.vehicles": "1.0.0", 42 | "com.unity.modules.video": "1.0.0", 43 | "com.unity.modules.vr": "1.0.0", 44 | "com.unity.modules.wind": "1.0.0", 45 | "com.unity.modules.xr": "1.0.0" 46 | }, 47 | "scopedRegistries": [] 48 | } 49 | -------------------------------------------------------------------------------- /ProjectSettings/AudioManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!11 &1 4 | AudioManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Volume: 1 8 | Rolloff Scale: 1 9 | Doppler Factor: 1 10 | Default Speaker Mode: 2 11 | m_SampleRate: 0 12 | m_DSPBufferSize: 1024 13 | m_VirtualVoiceCount: 512 14 | m_RealVoiceCount: 32 15 | m_SpatializerPlugin: 16 | m_AmbisonicDecoderPlugin: 17 | m_DisableAudio: 0 18 | m_VirtualizeEffects: 1 19 | m_RequestedDSPBufferSize: 1024 20 | -------------------------------------------------------------------------------- /ProjectSettings/AutoStreamingSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1200 &1 4 | AutoStreamingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | mSearchMode: 15 8 | mCustomSearchFile: 9 | mTextureSearchString: 10 | mMeshSearchString: 11 | mTextures: [] 12 | mAudios: [] 13 | mMeshes: [] 14 | mScenes: [] 15 | mConfigCCD: 16 | useCCD: 0 17 | cosKey: 18 | projectGuid: 19 | bucketUuid: 20 | bucketName: 21 | badgeName: 22 | -------------------------------------------------------------------------------- /ProjectSettings/ClusterInputManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!236 &1 4 | ClusterInputManager: 5 | m_ObjectHideFlags: 0 6 | m_Inputs: [] 7 | -------------------------------------------------------------------------------- /ProjectSettings/DynamicsManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!55 &1 4 | PhysicsManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_Gravity: {x: 0, y: -9.81, z: 0} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_BounceThreshold: 2 10 | m_SleepThreshold: 0.005 11 | m_DefaultContactOffset: 0.01 12 | m_DefaultSolverIterations: 6 13 | m_DefaultSolverVelocityIterations: 1 14 | m_QueriesHitBackfaces: 0 15 | m_QueriesHitTriggers: 1 16 | m_EnableAdaptiveForce: 0 17 | m_ClothInterCollisionDistance: 0 18 | m_ClothInterCollisionStiffness: 0 19 | m_ContactsGeneration: 1 20 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 21 | m_AutoSimulation: 1 22 | m_AutoSyncTransforms: 0 23 | m_ReuseCollisionCallbacks: 1 24 | m_ClothInterCollisionSettingsToggle: 0 25 | m_ContactPairsMode: 0 26 | m_BroadphaseType: 0 27 | m_WorldBounds: 28 | m_Center: {x: 0, y: 0, z: 0} 29 | m_Extent: {x: 250, y: 250, z: 250} 30 | m_WorldSubdivisions: 8 31 | m_FrictionType: 0 32 | m_EnableEnhancedDeterminism: 0 33 | m_EnableUnifiedHeightmaps: 1 34 | m_DefaultMaxAngluarSpeed: 7 35 | -------------------------------------------------------------------------------- /ProjectSettings/EditorBuildSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1045 &1 4 | EditorBuildSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_Scenes: [] 8 | m_configObjects: {} 9 | -------------------------------------------------------------------------------- /ProjectSettings/EditorSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!159 &1 4 | EditorSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 11 7 | m_ExternalVersionControlSupport: Visible Meta Files 8 | m_SerializationMode: 2 9 | m_LineEndingsForNewScripts: 0 10 | m_DefaultBehaviorMode: 0 11 | m_PrefabRegularEnvironment: {fileID: 0} 12 | m_PrefabUIEnvironment: {fileID: 0} 13 | m_SpritePackerMode: 0 14 | m_SpritePackerPaddingPower: 1 15 | m_EtcTextureCompressorBehavior: 1 16 | m_EtcTextureFastCompressor: 1 17 | m_EtcTextureNormalCompressor: 2 18 | m_EtcTextureBestCompressor: 4 19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmdef;rsp;asmref 20 | m_ProjectGenerationRootNamespace: 21 | m_CollabEditorSettings: 22 | inProgressEnabled: 1 23 | m_EnableTextureStreamingInEditMode: 1 24 | m_EnableTextureStreamingInPlayMode: 1 25 | m_AsyncShaderCompilation: 1 26 | m_EnterPlayModeOptionsEnabled: 0 27 | m_EnterPlayModeOptions: 3 28 | m_ShowLightmapResolutionOverlay: 1 29 | m_UseLegacyProbeSampleCount: 0 30 | m_SerializeInlineMappingsOnOneLine: 1 31 | -------------------------------------------------------------------------------- /ProjectSettings/GraphicsSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!30 &1 4 | GraphicsSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 13 7 | m_Deferred: 8 | m_Mode: 1 9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0} 10 | m_DeferredReflections: 11 | m_Mode: 1 12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0} 13 | m_ScreenSpaceShadows: 14 | m_Mode: 1 15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0} 16 | m_LegacyDeferred: 17 | m_Mode: 1 18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0} 19 | m_DepthNormals: 20 | m_Mode: 1 21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0} 22 | m_MotionVectors: 23 | m_Mode: 1 24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0} 25 | m_LightHalo: 26 | m_Mode: 1 27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0} 28 | m_LensFlare: 29 | m_Mode: 1 30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} 31 | m_AlwaysIncludedShaders: 32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} 33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} 34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0} 35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0} 36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} 37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} 38 | m_PreloadedShaders: [] 39 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, 40 | type: 0} 41 | m_CustomRenderPipeline: {fileID: 0} 42 | m_TransparencySortMode: 0 43 | m_TransparencySortAxis: {x: 0, y: 0, z: 1} 44 | m_DefaultRenderingPath: 1 45 | m_DefaultMobileRenderingPath: 1 46 | m_TierSettings: [] 47 | m_LightmapStripping: 0 48 | m_FogStripping: 0 49 | m_InstancingStripping: 0 50 | m_LightmapKeepPlain: 1 51 | m_LightmapKeepDirCombined: 1 52 | m_LightmapKeepDynamicPlain: 1 53 | m_LightmapKeepDynamicDirCombined: 1 54 | m_LightmapKeepShadowMask: 1 55 | m_LightmapKeepSubtractive: 1 56 | m_FogKeepLinear: 1 57 | m_FogKeepExp: 1 58 | m_FogKeepExp2: 1 59 | m_AlbedoSwatchInfos: [] 60 | m_LightsUseLinearIntensity: 0 61 | m_LightsUseColorTemperature: 0 62 | m_LogWhenShaderIsCompiled: 0 63 | m_AllowEnlightenSupportForUpgradedProject: 0 64 | -------------------------------------------------------------------------------- /ProjectSettings/MemorySettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!387306366 &1 4 | MemorySettings: 5 | m_ObjectHideFlags: 0 6 | m_EditorMemorySettings: 7 | m_MainAllocatorBlockSize: -1 8 | m_ThreadAllocatorBlockSize: -1 9 | m_MainGfxBlockSize: -1 10 | m_ThreadGfxBlockSize: -1 11 | m_CacheBlockSize: -1 12 | m_TypetreeBlockSize: -1 13 | m_ProfilerBlockSize: -1 14 | m_ProfilerEditorBlockSize: -1 15 | m_BucketAllocatorGranularity: -1 16 | m_BucketAllocatorBucketsCount: -1 17 | m_BucketAllocatorBlockSize: -1 18 | m_BucketAllocatorBlockCount: -1 19 | m_ProfilerBucketAllocatorGranularity: -1 20 | m_ProfilerBucketAllocatorBucketsCount: -1 21 | m_ProfilerBucketAllocatorBlockSize: -1 22 | m_ProfilerBucketAllocatorBlockCount: -1 23 | m_TempAllocatorSizeMain: -1 24 | m_JobTempAllocatorBlockSize: -1 25 | m_BackgroundJobTempAllocatorBlockSize: -1 26 | m_JobTempAllocatorReducedBlockSize: -1 27 | m_TempAllocatorSizeGIBakingWorker: -1 28 | m_TempAllocatorSizeNavMeshWorker: -1 29 | m_TempAllocatorSizeAudioWorker: -1 30 | m_TempAllocatorSizeCloudWorker: -1 31 | m_TempAllocatorSizeGfx: -1 32 | m_TempAllocatorSizeJobWorker: -1 33 | m_TempAllocatorSizeBackgroundWorker: -1 34 | m_TempAllocatorSizePreloadManager: -1 35 | m_PlatformMemorySettings: {} 36 | -------------------------------------------------------------------------------- /ProjectSettings/NavMeshAreas.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!126 &1 4 | NavMeshProjectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | areas: 8 | - name: Walkable 9 | cost: 1 10 | - name: Not Walkable 11 | cost: 1 12 | - name: Jump 13 | cost: 2 14 | - name: 15 | cost: 1 16 | - name: 17 | cost: 1 18 | - name: 19 | cost: 1 20 | - name: 21 | cost: 1 22 | - name: 23 | cost: 1 24 | - name: 25 | cost: 1 26 | - name: 27 | cost: 1 28 | - name: 29 | cost: 1 30 | - name: 31 | cost: 1 32 | - name: 33 | cost: 1 34 | - name: 35 | cost: 1 36 | - name: 37 | cost: 1 38 | - name: 39 | cost: 1 40 | - name: 41 | cost: 1 42 | - name: 43 | cost: 1 44 | - name: 45 | cost: 1 46 | - name: 47 | cost: 1 48 | - name: 49 | cost: 1 50 | - name: 51 | cost: 1 52 | - name: 53 | cost: 1 54 | - name: 55 | cost: 1 56 | - name: 57 | cost: 1 58 | - name: 59 | cost: 1 60 | - name: 61 | cost: 1 62 | - name: 63 | cost: 1 64 | - name: 65 | cost: 1 66 | - name: 67 | cost: 1 68 | - name: 69 | cost: 1 70 | - name: 71 | cost: 1 72 | m_LastAgentTypeID: -887442657 73 | m_Settings: 74 | - serializedVersion: 2 75 | agentTypeID: 0 76 | agentRadius: 0.5 77 | agentHeight: 2 78 | agentSlope: 45 79 | agentClimb: 0.75 80 | ledgeDropHeight: 0 81 | maxJumpAcrossDistance: 0 82 | minRegionArea: 2 83 | manualCellSize: 0 84 | cellSize: 0.16666667 85 | manualTileSize: 0 86 | tileSize: 256 87 | accuratePlacement: 0 88 | debug: 89 | m_Flags: 0 90 | m_SettingNames: 91 | - Humanoid 92 | -------------------------------------------------------------------------------- /ProjectSettings/PackageManagerSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &1 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 61 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | m_EnablePreReleasePackages: 0 16 | m_EnablePackageDependencies: 0 17 | m_AdvancedSettingsExpanded: 1 18 | m_ScopedRegistriesSettingsExpanded: 1 19 | m_SeeAllPackageVersions: 0 20 | oneTimeWarningShown: 0 21 | m_Registries: 22 | - m_Id: main 23 | m_Name: 24 | m_Url: https://packages.unity.cn 25 | m_Scopes: [] 26 | m_IsDefault: 1 27 | m_Capabilities: 7 28 | m_ConfigSource: 0 29 | m_UserSelectedRegistryName: 30 | m_UserAddingNewScopedRegistry: 0 31 | m_RegistryInfoDraft: 32 | m_Modified: 0 33 | m_ErrorMessage: 34 | m_UserModificationsInstanceId: -832 35 | m_OriginalInstanceId: -834 36 | m_LoadAssets: 0 37 | -------------------------------------------------------------------------------- /ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "m_Name": "Settings", 3 | "m_Path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json", 4 | "m_Dictionary": { 5 | "m_DictionaryValues": [] 6 | } 7 | } -------------------------------------------------------------------------------- /ProjectSettings/Physics2DSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!19 &1 4 | Physics2DSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 4 7 | m_Gravity: {x: 0, y: -9.81} 8 | m_DefaultMaterial: {fileID: 0} 9 | m_VelocityIterations: 8 10 | m_PositionIterations: 3 11 | m_VelocityThreshold: 1 12 | m_MaxLinearCorrection: 0.2 13 | m_MaxAngularCorrection: 8 14 | m_MaxTranslationSpeed: 100 15 | m_MaxRotationSpeed: 360 16 | m_BaumgarteScale: 0.2 17 | m_BaumgarteTimeOfImpactScale: 0.75 18 | m_TimeToSleep: 0.5 19 | m_LinearSleepTolerance: 0.01 20 | m_AngularSleepTolerance: 2 21 | m_DefaultContactOffset: 0.01 22 | m_JobOptions: 23 | serializedVersion: 2 24 | useMultithreading: 0 25 | useConsistencySorting: 0 26 | m_InterpolationPosesPerJob: 100 27 | m_NewContactsPerJob: 30 28 | m_CollideContactsPerJob: 100 29 | m_ClearFlagsPerJob: 200 30 | m_ClearBodyForcesPerJob: 200 31 | m_SyncDiscreteFixturesPerJob: 50 32 | m_SyncContinuousFixturesPerJob: 50 33 | m_FindNearestContactsPerJob: 100 34 | m_UpdateTriggerContactsPerJob: 100 35 | m_IslandSolverCostThreshold: 100 36 | m_IslandSolverBodyCostScale: 1 37 | m_IslandSolverContactCostScale: 10 38 | m_IslandSolverJointCostScale: 10 39 | m_IslandSolverBodiesPerJob: 50 40 | m_IslandSolverContactsPerJob: 50 41 | m_AutoSimulation: 1 42 | m_QueriesHitTriggers: 1 43 | m_QueriesStartInColliders: 1 44 | m_CallbacksOnDisable: 1 45 | m_ReuseCollisionCallbacks: 1 46 | m_AutoSyncTransforms: 0 47 | m_AlwaysShowColliders: 0 48 | m_ShowColliderSleep: 1 49 | m_ShowColliderContacts: 0 50 | m_ShowColliderAABB: 0 51 | m_ContactArrowScale: 0.2 52 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412} 53 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432} 54 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745} 55 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804} 56 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff 57 | -------------------------------------------------------------------------------- /ProjectSettings/PresetManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1386491679 &1 4 | PresetManager: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_DefaultPresets: {} 8 | -------------------------------------------------------------------------------- /ProjectSettings/ProjectVersion.txt: -------------------------------------------------------------------------------- 1 | m_EditorVersion: 2021.3.29f1c1 2 | m_EditorVersionWithRevision: 2021.3.29f1c1 (0b77087ad835) 3 | -------------------------------------------------------------------------------- /ProjectSettings/TagManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!78 &1 4 | TagManager: 5 | serializedVersion: 2 6 | tags: [] 7 | layers: 8 | - Default 9 | - TransparentFX 10 | - Ignore Raycast 11 | - 12 | - Water 13 | - UI 14 | - 15 | - 16 | - 17 | - 18 | - 19 | - 20 | - 21 | - 22 | - 23 | - 24 | - 25 | - 26 | - 27 | - 28 | - 29 | - 30 | - 31 | - 32 | - 33 | - 34 | - 35 | - 36 | - 37 | - 38 | - 39 | - 40 | m_SortingLayers: 41 | - name: Default 42 | uniqueID: 0 43 | locked: 0 44 | -------------------------------------------------------------------------------- /ProjectSettings/TimeManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!5 &1 4 | TimeManager: 5 | m_ObjectHideFlags: 0 6 | Fixed Timestep: 0.02 7 | Maximum Allowed Timestep: 0.33333334 8 | m_TimeScale: 1 9 | Maximum Particle Timestep: 0.03 10 | -------------------------------------------------------------------------------- /ProjectSettings/UnityConnectSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!310 &1 4 | UnityConnectSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 1 7 | m_Enabled: 0 8 | m_TestMode: 0 9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events 10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events 11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com 12 | m_DashboardUrl: https://dashboard.unity3d.com 13 | m_CNEventUrl: https://cdp.cloud.unity.cn/v1/events 14 | m_CNConfigUrl: https://cdp.cloud.unity.cn/config 15 | m_TestInitMode: 0 16 | CrashReportingSettings: 17 | m_EventUrl: https://perf-events.cloud.unity.cn 18 | m_Enabled: 0 19 | m_LogBufferSize: 10 20 | m_CaptureEditorExceptions: 1 21 | UnityPurchasingSettings: 22 | m_Enabled: 0 23 | m_TestMode: 0 24 | UnityAnalyticsSettings: 25 | m_Enabled: 1 26 | m_TestMode: 0 27 | m_InitializeOnStartup: 1 28 | m_PackageRequiringCoreStatsPresent: 0 29 | UnityAdsSettings: 30 | m_Enabled: 0 31 | m_InitializeOnStartup: 1 32 | m_TestMode: 0 33 | m_IosGameId: 34 | m_AndroidGameId: 35 | m_GameIds: {} 36 | m_GameId: 37 | PerformanceReportingSettings: 38 | m_Enabled: 0 39 | -------------------------------------------------------------------------------- /ProjectSettings/VFXManager.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!937362698 &1 4 | VFXManager: 5 | m_ObjectHideFlags: 0 6 | m_IndirectShader: {fileID: 0} 7 | m_CopyBufferShader: {fileID: 0} 8 | m_SortShader: {fileID: 0} 9 | m_StripUpdateShader: {fileID: 0} 10 | m_RenderPipeSettingsPath: 11 | m_FixedTimeStep: 0.016666668 12 | m_MaxDeltaTime: 0.05 13 | -------------------------------------------------------------------------------- /ProjectSettings/VersionControlSettings.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!890905787 &1 4 | VersionControlSettings: 5 | m_ObjectHideFlags: 0 6 | m_Mode: Visible Meta Files 7 | m_CollabEditorSettings: 8 | inProgressEnabled: 1 9 | -------------------------------------------------------------------------------- /ProjectSettings/XRSettings.asset: -------------------------------------------------------------------------------- 1 | { 2 | "m_SettingKeys": [ 3 | "VR Device Disabled", 4 | "VR Device User Alert" 5 | ], 6 | "m_SettingValues": [ 7 | "False", 8 | "False" 9 | ] 10 | } -------------------------------------------------------------------------------- /ProjectSettings/boot.config: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wy19910222/Unity-Tools/dee4b67bd828821dcc82ea3114e0f03dc7075154/ProjectSettings/boot.config --------------------------------------------------------------------------------