Merge pull request #3 from SepComet/StartMenu

StartMenu
This commit is contained in:
SepComet 2026-02-12 22:00:42 +08:00 committed by GitHub
commit 65d7c511e4
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
172 changed files with 12365 additions and 1827 deletions

6
.gitignore vendored
View File

@ -76,8 +76,7 @@ crashlytics-build.properties
/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin*
# Temporary auto-generated Android Assets
/[Aa]ssets/[Ss]treamingAssets/aa.meta
/[Aa]ssets/[Ss]treamingAssets/aa/*
/[Aa]ssets/[Ss]treamingAssets/
/AGENTS.md
/GameDesign.md
@ -93,3 +92,6 @@ crashlytics-build.properties
~$*.xlsb
/数据表/__pycache__
/Release
/AssetBundles

View File

@ -104,7 +104,7 @@ namespace UnityGameFramework.Editor
}
EditorGUI.EndDisabledGroup();
int frameRate = EditorGUILayout.IntSlider("Frame Rate", m_FrameRate.intValue, 1, 120);
int frameRate = EditorGUILayout.IntSlider("Frame Rate", m_FrameRate.intValue, 1, 240);
if (frameRate != m_FrameRate.intValue)
{
if (EditorApplication.isPlaying)

View File

@ -1,76 +1,76 @@
//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
// Homepage: https://gameframework.cn/
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
using UnityEditor;
using UnityGameFramework.Runtime;
namespace UnityGameFramework.Editor
{
[CustomEditor(typeof(LocalizationComponent))]
internal sealed class LocalizationComponentInspector : GameFrameworkInspector
{
private SerializedProperty m_EnableLoadDictionaryUpdateEvent = null;
private SerializedProperty m_EnableLoadDictionaryDependencyAssetEvent = null;
private SerializedProperty m_CachedBytesSize = null;
private HelperInfo<LocalizationHelperBase> m_LocalizationHelperInfo = new HelperInfo<LocalizationHelperBase>("Localization");
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
serializedObject.Update();
LocalizationComponent t = (LocalizationComponent)target;
EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);
{
EditorGUILayout.PropertyField(m_EnableLoadDictionaryUpdateEvent);
EditorGUILayout.PropertyField(m_EnableLoadDictionaryDependencyAssetEvent);
m_LocalizationHelperInfo.Draw();
EditorGUILayout.PropertyField(m_CachedBytesSize);
}
EditorGUI.EndDisabledGroup();
if (EditorApplication.isPlaying && IsPrefabInHierarchy(t.gameObject))
{
EditorGUILayout.LabelField("Language", t.Language.ToString());
EditorGUILayout.LabelField("System Language", t.SystemLanguage.ToString());
EditorGUILayout.LabelField("Dictionary Count", t.DictionaryCount.ToString());
EditorGUILayout.LabelField("Cached Bytes Size", t.CachedBytesSize.ToString());
}
serializedObject.ApplyModifiedProperties();
Repaint();
}
protected override void OnCompileComplete()
{
base.OnCompileComplete();
RefreshTypeNames();
}
private void OnEnable()
{
m_EnableLoadDictionaryUpdateEvent = serializedObject.FindProperty("m_EnableLoadDictionaryUpdateEvent");
m_EnableLoadDictionaryDependencyAssetEvent = serializedObject.FindProperty("m_EnableLoadDictionaryDependencyAssetEvent");
m_CachedBytesSize = serializedObject.FindProperty("m_CachedBytesSize");
m_LocalizationHelperInfo.Init(serializedObject);
RefreshTypeNames();
}
private void RefreshTypeNames()
{
m_LocalizationHelperInfo.Refresh();
serializedObject.ApplyModifiedProperties();
}
}
}
// //------------------------------------------------------------
// // Game Framework
// // Copyright © 2013-2021 Jiang Yin. All rights reserved.
// // Homepage: https://gameframework.cn/
// // Feedback: mailto:ellan@gameframework.cn
// //------------------------------------------------------------
//
// using UnityEditor;
// using UnityGameFramework.Runtime;
//
// namespace UnityGameFramework.Editor
// {
// [CustomEditor(typeof(LocalizationComponent))]
// internal sealed class LocalizationComponentInspector : GameFrameworkInspector
// {
// private SerializedProperty m_EnableLoadDictionaryUpdateEvent = null;
// private SerializedProperty m_EnableLoadDictionaryDependencyAssetEvent = null;
// private SerializedProperty m_CachedBytesSize = null;
//
// private HelperInfo<LocalizationHelperBase> m_LocalizationHelperInfo = new HelperInfo<LocalizationHelperBase>("Localization");
//
// public override void OnInspectorGUI()
// {
// base.OnInspectorGUI();
//
// serializedObject.Update();
//
// LocalizationComponent t = (LocalizationComponent)target;
//
// EditorGUI.BeginDisabledGroup(EditorApplication.isPlayingOrWillChangePlaymode);
// {
// EditorGUILayout.PropertyField(m_EnableLoadDictionaryUpdateEvent);
// EditorGUILayout.PropertyField(m_EnableLoadDictionaryDependencyAssetEvent);
// m_LocalizationHelperInfo.Draw();
// EditorGUILayout.PropertyField(m_CachedBytesSize);
// }
// EditorGUI.EndDisabledGroup();
//
// if (EditorApplication.isPlaying && IsPrefabInHierarchy(t.gameObject))
// {
// EditorGUILayout.LabelField("Language", t.Language.ToString());
// EditorGUILayout.LabelField("System Language", t.SystemLanguage.ToString());
// EditorGUILayout.LabelField("Dictionary Count", t.DictionaryCount.ToString());
// EditorGUILayout.LabelField("Cached Bytes Size", t.CachedBytesSize.ToString());
// }
//
// serializedObject.ApplyModifiedProperties();
//
// Repaint();
// }
//
// protected override void OnCompileComplete()
// {
// base.OnCompileComplete();
//
// RefreshTypeNames();
// }
//
// private void OnEnable()
// {
// m_EnableLoadDictionaryUpdateEvent = serializedObject.FindProperty("m_EnableLoadDictionaryUpdateEvent");
// m_EnableLoadDictionaryDependencyAssetEvent = serializedObject.FindProperty("m_EnableLoadDictionaryDependencyAssetEvent");
// m_CachedBytesSize = serializedObject.FindProperty("m_CachedBytesSize");
//
// m_LocalizationHelperInfo.Init(serializedObject);
//
// RefreshTypeNames();
// }
//
// private void RefreshTypeNames()
// {
// m_LocalizationHelperInfo.Refresh();
// serializedObject.ApplyModifiedProperties();
// }
// }
// }

View File

@ -1,4 +0,0 @@
Game.Id
Star Force
Scene.Menu1
Scene.Main2

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 44c8db52241385c45bbb14a1718f17bf
timeCreated: 1528026123
licenseType: Pro
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -2,14 +2,14 @@
<UnityGameFramework>
<ResourceBuilder>
<Settings>
<InternalResourceVersion>0</InternalResourceVersion>
<InternalResourceVersion>1</InternalResourceVersion>
<Platforms>1</Platforms>
<AssetBundleCompression>1</AssetBundleCompression>
<CompressionHelperTypeName>UnityGameFramework.Runtime.DefaultCompressionHelper</CompressionHelperTypeName>
<AdditionalCompressionSelected>True</AdditionalCompressionSelected>
<ForceRebuildAssetBundleSelected>False</ForceRebuildAssetBundleSelected>
<BuildEventHandlerTypeName>StarForce.Editor.StarForceBuildEventHandler</BuildEventHandlerTypeName>
<OutputDirectory></OutputDirectory>
<OutputDirectory>D:/Learn/GameLearn/UnityProjects/Biography of Li Jian/AssetBundles</OutputDirectory>
<OutputPackageSelected>True</OutputPackageSelected>
<OutputFullSelected>True</OutputFullSelected>
<OutputPackedSelected>True</OutputPackedSelected>

View File

@ -2,23 +2,16 @@
<UnityGameFramework>
<ResourceCollection>
<Resources>
<Resource Name="Configs" FileSystem="GameData" LoadType="0" Packed="True" ResourceGroups="Base" />
<Resource Name="DataTables" FileSystem="GameData" LoadType="0" Packed="True" ResourceGroups="Base" />
<Resource Name="Entities" FileSystem="Resources" LoadType="0" Packed="True" />
<Resource Name="Fonts" FileSystem="UI" LoadType="0" Packed="True" ResourceGroups="Base" />
<Resource Name="Localization/Dictionaries" Variant="en-us" FileSystem="UI" LoadType="0" Packed="True" ResourceGroups="Base" />
<Resource Name="Localization/Dictionaries" Variant="ko-kr" FileSystem="UI" LoadType="0" Packed="True" ResourceGroups="Base" />
<Resource Name="Localization/Dictionaries" Variant="zh-cn" FileSystem="UI" LoadType="0" Packed="True" ResourceGroups="Base" />
<Resource Name="Localization/Dictionaries" Variant="zh-tw" FileSystem="UI" LoadType="0" Packed="True" ResourceGroups="Base" />
<Resource Name="Materials" FileSystem="Resources" LoadType="0" Packed="True" />
<Resource Name="Meshes" FileSystem="Resources" LoadType="0" Packed="True" />
<Resource Name="Music/About" FileSystem="Resources" LoadType="0" Packed="True" ResourceGroups="Music" />
<Resource Name="Music/Background" FileSystem="Resources" LoadType="0" Packed="True" ResourceGroups="Music" />
<Resource Name="Music/Menu" FileSystem="Resources" LoadType="0" Packed="True" ResourceGroups="Music" />
<Resource Name="Scenes" FileSystem="Resources" LoadType="0" Packed="True" />
<Resource Name="SceneSettings" LoadType="0" Packed="True" />
<Resource Name="Sounds" FileSystem="Resources" LoadType="0" Packed="True" />
<Resource Name="Textures" FileSystem="Resources" LoadType="0" Packed="True" />
<Resource Name="UI/UIForms" FileSystem="UI" LoadType="0" Packed="True" />
<Resource Name="UI/UIItems" LoadType="0" Packed="True" />
<Resource Name="UI/UISounds" FileSystem="UI" LoadType="0" Packed="True" />
<Resource Name="UI/UISprites/Common" FileSystem="UI" LoadType="0" Packed="True" />
<Resource Name="UI/UISprites/Icons" FileSystem="UI" LoadType="0" Packed="True" />
@ -26,133 +19,58 @@
</Resources>
<Assets>
<Asset Guid="0179316b5fc7c2946a67c5877c02fc30" ResourceName="UI/UISprites/Common" />
<Asset Guid="01ce90464744bbb40a9d235bdcc27328" ResourceName="UI/UIForms" />
<Asset Guid="04d7dde7615d71b4db1a0c8d67a62e95" ResourceName="UI/UIForms" />
<Asset Guid="04dbc0581071c254ea6564b2ff06ff9b" ResourceName="Textures" />
<Asset Guid="093f8873cfe371d41b854ed9fb6bff69" ResourceName="Music/About" />
<Asset Guid="0963e6c65b2b1f74d9f455e21901e2dc" ResourceName="Textures" />
<Asset Guid="0992f89f84d762f478fd32f8225168b0" ResourceName="Entities" />
<Asset Guid="09966b19e546cc94aa84d0743cb2a83d" ResourceName="UI/UIForms" />
<Asset Guid="0a65a68c01a76ea4b8b574827a6467aa" ResourceName="UI/UISprites/Common" />
<Asset Guid="0ed73dc47f4cb38489020d05e9f02c99" ResourceName="Materials" />
<Asset Guid="0f995b3145e0e7247a42da6cef1dbf23" ResourceName="Materials" />
<Asset Guid="1053b0070685be347ab58587156842dc" ResourceName="Localization/Dictionaries" ResourceVariant="zh-tw" />
<Asset Guid="11e27c26ac87b40f0a62ec40d7261989" ResourceName="Entities" />
<Asset Guid="1478894bc9a1ed241b05b0862a7b8bce" ResourceName="Textures" />
<Asset Guid="14869ac0d4433f04db1704e39d03412e" ResourceName="Localization/Dictionaries" ResourceVariant="en-us" />
<Asset Guid="0bbb3a6d1e6bb8b4a9b4d8f0510d9c63" ResourceName="UI/UIItems" />
<Asset Guid="156d241f796508c4da4fc354a7fbf5a8" ResourceName="UI/UISprites/Common" />
<Asset Guid="160925a6fe2664f2a978566b819f0af0" ResourceName="Entities" />
<Asset Guid="185f97f18bd603a478461ce9c08bd039" ResourceName="Materials" />
<Asset Guid="1b4bad6cea5a94611b21f9757fe41444" ResourceName="Materials" />
<Asset Guid="1be4472894949437694aead55c6da60f" ResourceName="Sounds" />
<Asset Guid="1c89236d45255234ebd1d39657ff7e02" ResourceName="Textures" />
<Asset Guid="1cfe02ffd0b74854ea5bcd1a3c63ac3c" ResourceName="Materials" />
<Asset Guid="1d46a17a95a444c08830612bc1146d1d" ResourceName="Materials" />
<Asset Guid="1e0350b97c61bfb4a91c62d756d01727" ResourceName="Materials" />
<Asset Guid="236433a27ce40a7429b87d14d8fa3035" ResourceName="UI/UISprites/Common" />
<Asset Guid="239366f83979ffa48a45dac2f0f1e8cb" ResourceName="DataTables" />
<Asset Guid="24ca310f92a6796408f1db7647ec4e55" ResourceName="UI/UISprites/Common" />
<Asset Guid="2768a9a4c8d289840918dcb879705893" ResourceName="Meshes" />
<Asset Guid="2cb5eef4d7d7bf6459dd13a3f8d90246" ResourceName="Textures" />
<Asset Guid="315e8ed2db27c254cb3366ff0793cd90" ResourceName="DataTables" />
<Asset Guid="3455fe69f7ddc4604b95bf9b0a1e88d7" ResourceName="Entities" />
<Asset Guid="352da872791696c48af3b21132e3e3c3" ResourceName="DataTables" />
<Asset Guid="372a8b1e52bedc64b9207b12d167afaa" ResourceName="DataTables" />
<Asset Guid="3aa539b1e46111d4299a83c73ebe762c" ResourceName="UI/UIForms" />
<Asset Guid="378604b840f56ae49831978cf0e0a6ea" ResourceName="DataTables" />
<Asset Guid="3b1611489367200459a07da915578b6a" ResourceName="SceneSettings" />
<Asset Guid="3be3fac3611f4584695662c4889f722d" ResourceName="UI/UISprites/Common" />
<Asset Guid="3dc7455402dfa462b89a4bbd513955e9" ResourceName="Sounds" />
<Asset Guid="3e504a46a8fcec34db3c4776530c6eb2" ResourceName="Textures" />
<Asset Guid="3f54fcfdac53aec42ae18a6a1c6d8cb1" ResourceName="UI/UISprites/Common" />
<Asset Guid="4473d81b14ddb0143addf0e6050d8491" ResourceName="Scenes" />
<Asset Guid="44c8db52241385c45bbb14a1718f17bf" ResourceName="Configs" />
<Asset Guid="4a17d2c656f5c6b44a31e3ee547a76b0" ResourceName="DataTables" />
<Asset Guid="4c3865b2ac420cd46a9cde6ab468d016" ResourceName="Materials" />
<Asset Guid="4db6a299939bfe94893585eb387f577a" ResourceName="DataTables" />
<Asset Guid="4f688097e85071841a2c3ba165000c20" ResourceName="Textures" />
<Asset Guid="5282f20eba4d44213820e21af8481932" ResourceName="Meshes" />
<Asset Guid="42fee552f83943645beb47cf7093927a" ResourceName="DataTables" />
<Asset Guid="56b8df63bbad60749a69e38bc687fadf" ResourceName="UI/UISprites/Common" />
<Asset Guid="578af1667322bab45b652b79a40bb4fb" ResourceName="Materials" />
<Asset Guid="583ff7026dac91849b7c7b2468ba456b" ResourceName="Materials" />
<Asset Guid="5dcd89912e222bf4c87f76db4044bc5e" ResourceName="Localization/Dictionaries" ResourceVariant="ko-kr" />
<Asset Guid="59ac12de6091b7741bc2819cf790146f" ResourceName="UI/UIForms" />
<Asset Guid="5ae1171af6ab9b646b7a915598c657f1" ResourceName="Scenes" />
<Asset Guid="62af9e5c8f39cfa49af9e10ccf42f1da" ResourceName="UI/UISprites/Common" />
<Asset Guid="638ff8ae4a0d15047839cd265d3bc296" ResourceName="Music/Background" />
<Asset Guid="63fe6ff9ab9e1433f8db4ebd940f2442" ResourceName="Materials" />
<Asset Guid="64f3bb52c6a54854688fcc656af2b1c9" ResourceName="DataTables" />
<Asset Guid="639c98846a76d624cbac99ade4a1e1a3" ResourceName="Scenes" />
<Asset Guid="66fa61c3dfce3444fb3239ac93e6e75d" ResourceName="UI/UIForms" />
<Asset Guid="68d252316715f9f4fbb327802325e2e2" ResourceName="UI/UIItems" />
<Asset Guid="6cbc2c323b77f804fb958fa4eca33998" ResourceName="UI/UISprites/Common" />
<Asset Guid="6d9b42ac01f24bf4d98923573f103575" ResourceName="Textures" />
<Asset Guid="6db0c8354d868834abf29840037591b1" ResourceName="Textures" />
<Asset Guid="6e023ca4283b3a7469cd61d24c83048c" ResourceName="Textures" />
<Asset Guid="6e3730451fa077346abd4ac642ea71d8" ResourceName="Textures" />
<Asset Guid="6e5d026bf0652ed4380f6a66f4aa26c5" ResourceName="Textures" />
<Asset Guid="71646ebaae78d43aeb8b53cacdb69671" ResourceName="Textures" />
<Asset Guid="72e76810224064300b7d32e8322a5d12" ResourceName="Sounds" />
<Asset Guid="738bdf56857a65f479c367c7b62c4ad7" ResourceName="Entities" />
<Asset Guid="75da5a4ba56425747be081b9b396ba4e" ResourceName="UI/UIForms" />
<Asset Guid="77cbb7c5404c10242ab59953e0746314" ResourceName="Fonts" />
<Asset Guid="7d5f7699d6d1d48e485ac71126e12061" ResourceName="Entities" />
<Asset Guid="7e91cd9bad7babf4b975882a4b7453cb" ResourceName="Textures" />
<Asset Guid="7eae0d2701845a54aa570b07c55dab44" ResourceName="Textures" />
<Asset Guid="788b17ff3aef4cd4fb6c808826c875e5" ResourceName="DataTables" />
<Asset Guid="7f5aee8da226edf4991598327cb32ce0" ResourceName="UI/UISprites/Logos" />
<Asset Guid="7fd11dc5d29076d469d414dec2818f11" ResourceName="Configs" />
<Asset Guid="834bfaee90a9d4e04b1e8c1ca22cc88e" ResourceName="Entities" />
<Asset Guid="836be25be3e1e8c41ae5545bc8a9a4d7" ResourceName="Textures" />
<Asset Guid="8940b037a9b441c4cbd3d2b446838424" ResourceName="Materials" />
<Asset Guid="8b1acacd22538f34cb85287a0781ea5e" ResourceName="DataTables" />
<Asset Guid="8cf749fdfa5edc3478d16893efeaa0eb" ResourceName="Entities" />
<Asset Guid="8e114ded6a865324588170636872943c" ResourceName="DataTables" />
<Asset Guid="8e27380ee68aa4a219b4db9018e7da31" ResourceName="Materials" />
<Asset Guid="9143e2b62ad50488482f9b73672fc331" ResourceName="Entities" />
<Asset Guid="955000b4d1441470e8cbf94f483228b5" ResourceName="Materials" />
<Asset Guid="97b1f8b25cca2bc458cb9d6127c8d186" ResourceName="Materials" />
<Asset Guid="97d117308cf86924289e81e7e71dd5dd" ResourceName="DataTables" />
<Asset Guid="9afa958d6d8235941b9badb42aae4370" ResourceName="Meshes" />
<Asset Guid="9b433f0bb7fef6f4085c316a0d88c307" ResourceName="DataTables" />
<Asset Guid="9be2e1e45f4edd74c8764538ad306b78" ResourceName="Localization/Dictionaries" ResourceVariant="zh-cn" />
<Asset Guid="9c3961f379234354e813d7b38146424d" ResourceName="DataTables" />
<Asset Guid="9c3faac13c8ced84a9f3018303b7bb98" ResourceName="DataTables" />
<Asset Guid="9ddab293e2a8af3499dac05f5fd6169c" ResourceName="Meshes" />
<Asset Guid="7f72e35a938b99d478b47012eacff084" ResourceName="UI/UIItems" />
<Asset Guid="87ba2cae099325c4bb0121cd8df50f43" ResourceName="DataTables" />
<Asset Guid="99d811b0183246646a2ce8df996f4bca" ResourceName="Fonts" />
<Asset Guid="9f847ec5e66e03e4ead1d3c5f7b510e8" ResourceName="UI/UISprites/Common" />
<Asset Guid="a019ae3af8e864616b85773c509f5285" ResourceName="Sounds" />
<Asset Guid="a23eef5e20ff8cb46adf33491fc443fb" ResourceName="Materials" />
<Asset Guid="a33e23ae848110243820cda82120b105" ResourceName="DataTables" />
<Asset Guid="a6d58f54ce5934781962a4f887e834f3" ResourceName="Entities" />
<Asset Guid="a71f8bb1b1b2c51438e2bafc884cb02c" ResourceName="DataTables" />
<Asset Guid="a7b030cffa2dc44478c14e49a22771c2" ResourceName="Materials" />
<Asset Guid="a8c07bbe04fdaf04b80e27f651a8edd6" ResourceName="UI/UISprites/Common" />
<Asset Guid="ab45c3f613f388d43bbf43ec05eb92e2" ResourceName="UI/UISprites/Common" />
<Asset Guid="ab4774faf71b57a40a29a9e902403fe3" ResourceName="DataTables" />
<Asset Guid="abd1565e9e268f04cac3631d022b4ace" ResourceName="Entities" />
<Asset Guid="ad56aae2bb0f2ce4a86711287e14e223" ResourceName="DataTables" />
<Asset Guid="ae6a7f967521769458b0913fa39caaf4" ResourceName="Textures" />
<Asset Guid="afc18fc39ade3744397c0c993b57be53" ResourceName="Entities" />
<Asset Guid="b031b4f2980561542a7f7ba41391edc3" ResourceName="Scenes" />
<Asset Guid="b0c7cf51d3fecb446ab93bf854419715" ResourceName="Materials" />
<Asset Guid="b2cebe04343227945bab3729ca9a3493" ResourceName="DataTables" />
<Asset Guid="ba157ba55f72c424a9e88f3c029997c4" ResourceName="Textures" />
<Asset Guid="baedbbad82997f445a8cb4da210404e0" ResourceName="Meshes" />
<Asset Guid="bbfd75fe6fe00e1448fe988173ede7f9" ResourceName="UI/UIForms" />
<Asset Guid="bf75b984df8a84987bcf3a8bf6e2862d" ResourceName="Sounds" />
<Asset Guid="c547624e174de984882f0a14b4bb32e1" ResourceName="Materials" />
<Asset Guid="c58c9afddbd36d14d837fa218d772996" ResourceName="Materials" />
<Asset Guid="c7d1e11dd37634b48a9dd4012b8e4306" ResourceName="UI/UISounds" />
<Asset Guid="caa829ab2ffc71340a69253afdf58365" ResourceName="Music/Menu" />
<Asset Guid="cadd0764941c8b646ae79b51d0ea8285" ResourceName="UI/UISprites/Common" />
<Asset Guid="cccff1c0cc661424294ed55e531c767b" ResourceName="UI/UIForms" />
<Asset Guid="cfe53cf384344bd47a8680f8c5f97a7b" ResourceName="DataTables" />
<Asset Guid="d9808401c68af274a8edfbed3d1b53c7" ResourceName="Meshes" />
<Asset Guid="db58965402f12ed47b4dad61a9e48c9d" ResourceName="UI/UISprites/Icons" />
<Asset Guid="e0792649e7774a24d8e7cceba0231c61" ResourceName="DataTables" />
<Asset Guid="dde468eff36cc784fa023279ae4d4d33" ResourceName="SceneSettings" />
<Asset Guid="e5ca26c53b6ab8a46b52817008d7c7fa" ResourceName="UI/UISprites/Icons" />
<Asset Guid="e82837c9099f69a48b48fc44eb8d119d" ResourceName="UI/UISprites/Common" />
<Asset Guid="e830964cdb85ff3429bca484c16bab44" ResourceName="UI/UISounds" />
<Asset Guid="e85864330b68dde498dcb6e8711815d3" ResourceName="UI/UISprites/Common" />
<Asset Guid="eabb37cb6d738b443b398b701a64cd88" ResourceName="Textures" />
<Asset Guid="f2f4df0b7211e4c42a5638273525d8ee" ResourceName="UI/UISprites/Common" />
<Asset Guid="f2f97a713beae744181ba934f9c4113a" ResourceName="DataTables" />
<Asset Guid="f36c72c738c55f741afcd674a0b1245f" ResourceName="Materials" />
<Asset Guid="f438a72a91e1c3c4a9ced40888ffec96" ResourceName="UI/UISprites/Icons" />
<Asset Guid="f4ec271e525e14ca9927a07e6a2e153d" ResourceName="Entities" />
<Asset Guid="f6db5bbdfe0e9894798706814cd6b336" ResourceName="Textures" />
<Asset Guid="fd3cbf51780694849b9b019b36a3938e" ResourceName="Textures" />
<Asset Guid="fdb5edd099d06b045af609ba3172400a" ResourceName="DataTables" />
<Asset Guid="fedd25a3c60e7ae499fc6efab9ee180b" ResourceName="Entities" />
</Assets>
</ResourceCollection>
</UnityGameFramework>

View File

@ -1,6 +1,7 @@
fileFormatVersion: 2
guid: 7fd11dc5d29076d469d414dec2818f11
guid: 87ba2cae099325c4bb0121cd8df50f43
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 315e8ed2db27c254cb3366ff0793cd90
timeCreated: 1528026124
licenseType: Pro
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 42fee552f83943645beb47cf7093927a
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -4,5 +4,4 @@
# 场景编号 备注 资源名称 背景音乐编号
1 菜单场景 Menu 1
2 战斗场景 Main 2
3 压力测试场景 StressTest 0
4 GameplayA 0
3 GameplayA 0

View File

@ -1,9 +0,0 @@
# 声音配置表
# Id AssetName Priority Loop Volume SpatialBlend MaxDistance
# int string int bool float float float
# 声音编号 策划备注 资源名称 优先级默认0128最高-128最低 是否循环 音量0~1 声音空间混合量0为2D1为3D中间值混合效果 声音最大距离
10000 玩家子弹 weapon_player 0 False 1 0 100
10001 敌人子弹 weapon_enemy 0 False 1 0 100
20000 玩家爆炸 explosion_player 0 False 1 0 100
20001 敌人爆炸 explosion_enemy 0 False 1 0 100
20002 小行星爆炸 explosion_asteroid 0 False 1 0 100

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 372a8b1e52bedc64b9207b12d167afaa
timeCreated: 1528026124
licenseType: Pro
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -2,7 +2,7 @@
# Id AssetName UIGroupName AllowMultiInstance PauseCoveredUIForm
# int string string bool bool
# 界面编号 策划备注 资源名称 界面组名称 是否允许多个界面实例 是否暂停被其覆盖的界面
1 弹出框 DialogForm Default True True
1 弹出框 DialogForm Dialog True True
100 主菜单 MenuForm Default False True
101 设置 SettingForm Default False True
102 关于 AboutForm Default False True

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: f2f97a713beae744181ba934f9c4113a
timeCreated: 1528026124
licenseType: Pro
TextScriptImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -132,8 +132,8 @@ Material:
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _StencilReadMask: 1
- _StencilWriteMask: 0
- _TextureHeight: 4096
- _TextureWidth: 4096
- _UnderlayDilate: 0
@ -168,9 +168,9 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 71c1514a6bd24e1e882cebbe1904ce04, type: 3}
m_Name: MainTMPFont
m_EditorClassIdentifier:
hashCode: -1438885570
hashCode: 1106704785
material: {fileID: -1106088975554028259}
materialHashCode: -1897074850
materialHashCode: -1461255791
m_Version: 1.1.0
m_SourceFontFileGUID: 376d7b8f751da3646930f65eab02a204
m_SourceFontFile_EditorRef: {fileID: 12800000, guid: 376d7b8f751da3646930f65eab02a204,

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c4b7102b2e334264398178de3d6325b4
guid: 6b5df98c9d4986e4f90d7262b4d2d604
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -0,0 +1,297 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
m_ObjectHideFlags: 0
serializedVersion: 2
m_OcclusionBakeSettings:
smallestOccluder: 5
smallestHole: 0.25
backfaceThreshold: 100
m_SceneGUID: 00000000000000000000000000000000
m_OcclusionCullingData: {fileID: 0}
--- !u!104 &2
RenderSettings:
m_ObjectHideFlags: 0
serializedVersion: 9
m_Fog: 0
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
m_FogMode: 3
m_FogDensity: 0.01
m_LinearFogStart: 0
m_LinearFogEnd: 300
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
m_AmbientIntensity: 1
m_AmbientMode: 0
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
m_HaloStrength: 0.5
m_FlareStrength: 1
m_FlareFadeSpeed: 3
m_HaloTexture: {fileID: 0}
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
m_DefaultReflectionMode: 0
m_DefaultReflectionResolution: 128
m_ReflectionBounces: 1
m_ReflectionIntensity: 1
m_CustomReflection: {fileID: 0}
m_Sun: {fileID: 0}
m_UseRadianceAmbientProbe: 0
--- !u!157 &3
LightmapSettings:
m_ObjectHideFlags: 0
serializedVersion: 12
m_GIWorkflowMode: 1
m_GISettings:
serializedVersion: 2
m_BounceScale: 1
m_IndirectOutputScale: 1
m_AlbedoBoost: 1
m_EnvironmentLightingMode: 0
m_EnableBakedLightmaps: 1
m_EnableRealtimeLightmaps: 0
m_LightmapEditorSettings:
serializedVersion: 12
m_Resolution: 2
m_BakeResolution: 40
m_AtlasSize: 1024
m_AO: 0
m_AOMaxDistance: 1
m_CompAOExponent: 1
m_CompAOExponentDirect: 0
m_ExtractAmbientOcclusion: 0
m_Padding: 2
m_LightmapParameters: {fileID: 0}
m_LightmapsBakeMode: 1
m_TextureCompression: 1
m_FinalGather: 0
m_FinalGatherFiltering: 1
m_FinalGatherRayCount: 256
m_ReflectionCompression: 2
m_MixedBakeMode: 2
m_BakeBackend: 1
m_PVRSampling: 1
m_PVRDirectSampleCount: 32
m_PVRSampleCount: 512
m_PVRBounces: 2
m_PVREnvironmentSampleCount: 256
m_PVREnvironmentReferencePointCount: 2048
m_PVRFilteringMode: 1
m_PVRDenoiserTypeDirect: 1
m_PVRDenoiserTypeIndirect: 1
m_PVRDenoiserTypeAO: 1
m_PVRFilterTypeDirect: 0
m_PVRFilterTypeIndirect: 0
m_PVRFilterTypeAO: 0
m_PVREnvironmentMIS: 1
m_PVRCulling: 1
m_PVRFilteringGaussRadiusDirect: 1
m_PVRFilteringGaussRadiusIndirect: 5
m_PVRFilteringGaussRadiusAO: 2
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
m_PVRFilteringAtrousPositionSigmaIndirect: 2
m_PVRFilteringAtrousPositionSigmaAO: 1
m_ExportTrainingData: 0
m_TrainingDataDestination: TrainingData
m_LightProbeSampleCountMultiplier: 4
m_LightingDataAsset: {fileID: 0}
m_LightingSettings: {fileID: 0}
--- !u!196 &4
NavMeshSettings:
serializedVersion: 2
m_ObjectHideFlags: 0
m_BuildSettings:
serializedVersion: 3
agentTypeID: 0
agentRadius: 0.5
agentHeight: 2
agentSlope: 45
agentClimb: 0.4
ledgeDropHeight: 0
maxJumpAcrossDistance: 0
minRegionArea: 2
manualCellSize: 0
cellSize: 0.16666667
manualTileSize: 0
tileSize: 256
buildHeightMesh: 0
maxJobWorkers: 0
preserveTilesOutsideBounds: 0
debug:
m_Flags: 0
m_NavMeshData: {fileID: 0}
--- !u!1 &203844586
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 203844589}
- component: {fileID: 203844588}
- component: {fileID: 203844587}
m_Layer: 0
m_Name: Directional Light
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &203844587
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 203844586}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 3
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_LightLayerMask: 1
m_RenderingLayers: 1
m_CustomShadowLayers: 0
m_ShadowLayerMask: 1
m_ShadowRenderingLayers: 1
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 1
--- !u!108 &203844588
Light:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 203844586}
m_Enabled: 1
serializedVersion: 10
m_Type: 1
m_Shape: 0
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize: 10
m_Shadows:
m_Type: 2
m_Resolution: -1
m_CustomResolution: -1
m_Strength: 1
m_Bias: 0.05
m_NormalBias: 0.4
m_NearPlane: 0.2
m_CullingMatrixOverride:
e00: 1
e01: 0
e02: 0
e03: 0
e10: 0
e11: 1
e12: 0
e13: 0
e20: 0
e21: 0
e22: 1
e23: 0
e30: 0
e31: 0
e32: 0
e33: 1
m_UseCullingMatrixOverride: 0
m_Cookie: {fileID: 0}
m_DrawHalo: 0
m_Flare: {fileID: 0}
m_RenderMode: 0
m_CullingMask:
serializedVersion: 2
m_Bits: 4294967295
m_RenderingLayerMask: 1
m_Lightmapping: 4
m_LightShadowCasterMode: 0
m_AreaSize: {x: 1, y: 1}
m_BounceIntensity: 1
m_ColorTemperature: 6570
m_UseColorTemperature: 0
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
m_UseBoundingSphereOverride: 0
m_UseViewFrustumForShadowCasterCull: 1
m_ShadowRadius: 0
m_ShadowAngle: 0
--- !u!4 &203844589
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 203844586}
serializedVersion: 2
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
m_LocalPosition: {x: 0, y: 3, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
--- !u!1 &1160234425
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1160234427}
- component: {fileID: 1160234426}
m_Layer: 0
m_Name: Global Volume
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1160234426
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1160234425}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3}
m_Name:
m_EditorClassIdentifier:
m_IsGlobal: 1
priority: 0
blendDistance: 0
weight: 1
sharedProfile: {fileID: 11400000, guid: dde468eff36cc784fa023279ae4d4d33, type: 2}
--- !u!4 &1160234427
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1160234425}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1660057539 &9223372036854775807
SceneRoots:
m_ObjectHideFlags: 0
m_Roots:
- {fileID: 203844589}
- {fileID: 1160234427}

View File

@ -1,6 +1,5 @@
fileFormatVersion: 2
guid: 3c721a41db518484e9a1771952725489
folderAsset: yes
guid: 5ae1171af6ab9b646b7a915598c657f1
DefaultImporter:
externalObjects: {}
userData:

View File

@ -0,0 +1,104 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-32820517437979890
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3}
m_Name: Bloom
m_EditorClassIdentifier:
active: 1
skipIterations:
m_OverrideState: 0
m_Value: 1
threshold:
m_OverrideState: 0
m_Value: 0.9
intensity:
m_OverrideState: 1
m_Value: 1
scatter:
m_OverrideState: 0
m_Value: 0.7
clamp:
m_OverrideState: 0
m_Value: 65472
tint:
m_OverrideState: 0
m_Value: {r: 1, g: 1, b: 1, a: 1}
highQualityFiltering:
m_OverrideState: 0
m_Value: 0
downscale:
m_OverrideState: 0
m_Value: 0
maxIterations:
m_OverrideState: 0
m_Value: 6
dirtTexture:
m_OverrideState: 0
m_Value: {fileID: 0}
dimension: 1
dirtIntensity:
m_OverrideState: 0
m_Value: 0
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3}
m_Name: GlobalVolumeProfile
m_EditorClassIdentifier:
components:
- {fileID: 1881579288749618558}
- {fileID: -32820517437979890}
--- !u!114 &1881579288749618558
MonoBehaviour:
m_ObjectHideFlags: 3
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 97c23e3b12dc18c42a140437e53d3951, type: 3}
m_Name: Tonemapping
m_EditorClassIdentifier:
active: 1
mode:
m_OverrideState: 1
m_Value: 1
neutralHDRRangeReductionMode:
m_OverrideState: 0
m_Value: 2
acesPreset:
m_OverrideState: 0
m_Value: 3
hueShiftAmount:
m_OverrideState: 0
m_Value: 0
detectPaperWhite:
m_OverrideState: 0
m_Value: 0
paperWhite:
m_OverrideState: 0
m_Value: 300
detectBrightnessLimits:
m_OverrideState: 0
m_Value: 1
minNits:
m_OverrideState: 0
m_Value: 0.005
maxNits:
m_OverrideState: 0
m_Value: 1000

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 707360a9c581a4bd7aa53bfeb1429f71
guid: dde468eff36cc784fa023279ae4d4d33
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000

View File

@ -5,6 +5,7 @@
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
using Definition.DataStruct;
using GameFramework;
using StarForce;
using UI;

View File

@ -1,5 +1,6 @@
using System.Collections.Generic;
using DataTable;
using Definition;
using Definition.Enum;
using Event;
using GameFramework.DataTable;
@ -15,8 +16,6 @@ namespace CustomComponent
{
#region Property
[SerializeField] private float _playingSpeed = 1.0f;
private const int DialogChapterDivisor = 1000;
private const int LineChapterDivisor = 100000000;
private const int LineDialogDivisor = 100000;
@ -37,8 +36,6 @@ namespace CustomComponent
private bool _isInitialized;
private bool _isPlaying;
public float PlayingSpeed => _playingSpeed;
public bool IsInitialized => _isInitialized;
public bool IsPlaying => _isPlaying;
@ -215,7 +212,8 @@ namespace CustomComponent
_formContext.DialogId = dialogRow.Id;
_formContext.DialogTitle = dialogRow.Title;
_formContext.DialogUIMode = dialogRow.UIMode;
_formContext.PlayingSpeed = Mathf.Max(0f, _playingSpeed);
_formContext.PlayingSpeed = (DialogPlayingSpeed)GameEntry.Setting.GetInt(Constant.Setting.DialogPlayingSpeed);
_formContext.DialogWindowAlpha = (DialogWindowAlpha)GameEntry.Setting.GetInt(Constant.Setting.DialogWindowAlpha);
_currentLineIndex = 0;
ApplyLineToContext(dialogLines[_currentLineIndex], _currentLineIndex, dialogLines.Count);
@ -355,7 +353,6 @@ namespace CustomComponent
_formContext.Direction = lineRow.Direction;
_formContext.Text = lineRow.Text;
_formContext.Emphasis = lineRow.Emphasis;
_formContext.PlayingSpeed = Mathf.Max(0f, _playingSpeed);
_formContext.LineIndex = lineIndex;
_formContext.TotalLines = totalLines;
_formContext.IsLastLine = lineIndex >= totalLines - 1;

View File

@ -1,17 +1,4 @@
//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
// Homepage: https://gameframework.cn/
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
// 此文件由工具自动生成,请勿直接修改。
// 生成时间2021-06-16 21:54:35.591
//------------------------------------------------------------
using GameFramework;
using System;
using System.Collections.Generic;
using System.IO;
using System.IO;
using System.Text;
using UnityEngine;
using UnityGameFramework.Runtime;
@ -21,7 +8,7 @@ namespace DataTable
/// <summary>
/// 音乐配置表。
/// </summary>
public class DRMusic : DataRowBase
public class DRBGM : DataRowBase
{
private int m_Id = 0;

View File

@ -1,7 +1,4 @@
using GameFramework;
using System;
using System.Collections.Generic;
using System.IO;
using System.IO;
using System.Text;
using UnityEngine;
using UnityGameFramework.Runtime;
@ -11,7 +8,7 @@ namespace DataTable
/// <summary>
/// 声音配置表。
/// </summary>
public class DRUISound : DataRowBase
public class DRSE : DataRowBase
{
private int m_Id = 0;

View File

@ -1,127 +0,0 @@
using System.IO;
using System.Text;
using UnityGameFramework.Runtime;
namespace DataTable
{
/// <summary>
/// 声音配置表。
/// </summary>
public class DRSound : DataRowBase
{
private int m_Id = 0;
/// <summary>
/// 获取声音编号。
/// </summary>
public override int Id
{
get
{
return m_Id;
}
}
/// <summary>
/// 获取资源名称。
/// </summary>
public string AssetName
{
get;
private set;
}
/// <summary>
/// 获取优先级默认0128最高-128最低
/// </summary>
public int Priority
{
get;
private set;
}
/// <summary>
/// 获取是否循环。
/// </summary>
public bool Loop
{
get;
private set;
}
/// <summary>
/// 获取音量0~1
/// </summary>
public float Volume
{
get;
private set;
}
/// <summary>
/// 获取声音空间混合量0为2D1为3D中间值混合效果
/// </summary>
public float SpatialBlend
{
get;
private set;
}
/// <summary>
/// 获取声音最大距离。
/// </summary>
public float MaxDistance
{
get;
private set;
}
public override bool ParseDataRow(string dataRowString, object userData)
{
string[] columnStrings = dataRowString.Split(DataTableExtension.DataSplitSeparators);
for (int i = 0; i < columnStrings.Length; i++)
{
columnStrings[i] = columnStrings[i].Trim(DataTableExtension.DataTrimSeparators);
}
int index = 0;
index++;
m_Id = int.Parse(columnStrings[index++]);
index++;
AssetName = columnStrings[index++];
Priority = int.Parse(columnStrings[index++]);
Loop = bool.Parse(columnStrings[index++]);
Volume = float.Parse(columnStrings[index++]);
SpatialBlend = float.Parse(columnStrings[index++]);
MaxDistance = float.Parse(columnStrings[index++]);
GeneratePropertyArray();
return true;
}
public override bool ParseDataRow(byte[] dataRowBytes, int startIndex, int length, object userData)
{
using (MemoryStream memoryStream = new MemoryStream(dataRowBytes, startIndex, length, false))
{
using (BinaryReader binaryReader = new BinaryReader(memoryStream, Encoding.UTF8))
{
m_Id = binaryReader.Read7BitEncodedInt32();
AssetName = binaryReader.ReadString();
Priority = binaryReader.Read7BitEncodedInt32();
Loop = binaryReader.ReadBoolean();
Volume = binaryReader.ReadSingle();
SpatialBlend = binaryReader.ReadSingle();
MaxDistance = binaryReader.ReadSingle();
}
}
GeneratePropertyArray();
return true;
}
private void GeneratePropertyArray()
{
}
}
}

View File

@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 5479812568543994bbbcdbee6c42fce1
folderAsset: yes
timeCreated: 1528026148
licenseType: Pro
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,86 +0,0 @@
//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
// Homepage: https://gameframework.cn/
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
using Definition;
using GameFramework.Debugger;
using GameFramework.Localization;
using UnityEngine;
using UnityGameFramework.Runtime;
namespace StarForce
{
public class ChangeLanguageDebuggerWindow : IDebuggerWindow
{
private Vector2 m_ScrollPosition = Vector2.zero;
private bool m_NeedRestart = false;
public void Initialize(params object[] args)
{
}
public void Shutdown()
{
}
public void OnEnter()
{
}
public void OnLeave()
{
}
public void OnUpdate(float elapseSeconds, float realElapseSeconds)
{
if (m_NeedRestart)
{
m_NeedRestart = false;
UnityGameFramework.Runtime.GameEntry.Shutdown(ShutdownType.Restart);
}
}
public void OnDraw()
{
m_ScrollPosition = GUILayout.BeginScrollView(m_ScrollPosition);
{
DrawSectionChangeLanguage();
}
GUILayout.EndScrollView();
}
private void DrawSectionChangeLanguage()
{
GUILayout.Label("<b>Change Language</b>");
GUILayout.BeginHorizontal("box");
{
if (GUILayout.Button("Chinese Simplified", GUILayout.Height(30)))
{
GameEntry.Localization.Language = Language.ChineseSimplified;
SaveLanguage();
}
if (GUILayout.Button("Chinese Traditional", GUILayout.Height(30)))
{
GameEntry.Localization.Language = Language.ChineseTraditional;
SaveLanguage();
}
if (GUILayout.Button("English", GUILayout.Height(30)))
{
GameEntry.Localization.Language = Language.English;
SaveLanguage();
}
}
GUILayout.EndHorizontal();
}
private void SaveLanguage()
{
GameEntry.Setting.SetString(Constant.Setting.Language, GameEntry.Localization.Language.ToString());
GameEntry.Setting.Save();
m_NeedRestart = true;
}
}
}

View File

@ -11,15 +11,18 @@ namespace Definition
{
public static class Setting
{
public const string Language = "Setting.Language";
public const string SoundGroupMuted = "Setting.{0}Muted";
public const string SoundGroupVolume = "Setting.{0}Volume";
public const string MusicMuted = "Setting.MusicMuted";
public const string MusicVolume = "Setting.MusicVolume";
public const string SoundMuted = "Setting.SoundMuted";
public const string SoundVolume = "Setting.SoundVolume";
public const string UISoundMuted = "Setting.UISoundMuted";
public const string UISoundVolume = "Setting.UISoundVolume";
public const string BGMVolume = "Setting.BGMVolume";
public const string SEVolume = "Setting.SEVolume";
public const string AllowShake = "Setting.AllowShake";
public const string AllowBlink = "Setting.AllowBlink";
public const string DialogWindowAlpha = "Setting.DialogWindowAlpha";
public const string DialogPlayingSpeed = "Setting.PlayingSpeed";
public const string ScreenSolution = "Setting.ScreenSolution";
public const string ScreenWindow = "Setting.ScreenWindow";
public const string VSync = "Setting.VSync";
public const string AntiAliasing = "Setting.AntiAliasing";
}
}
}

View File

@ -5,7 +5,7 @@
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
namespace StarForce
namespace Definition.DataStruct
{
public class BuildInfo
{

View File

@ -0,0 +1,69 @@
using Definition.Enum;
namespace Definition.DataStruct
{
public struct GameSetting
{
#region SoundConfig
/// <summary>
/// 音乐音量
/// </summary>
public float BGMVolume { get; set; }
/// <summary>
/// 音效音量
/// </summary>
public float SEVolume { get; set; }
#endregion
#region GameConfig
/// <summary>
/// 允许画面震动
/// </summary>
public bool AllowShake { get; set; }
/// <summary>
/// 允许画面闪光
/// </summary>
public bool AllowBlink { get; set; }
/// <summary>
/// 对话窗口透明度
/// </summary>
public DialogWindowAlpha DialogWindowAlpha { get; set; }
/// <summary>
/// 对话播放速度
/// </summary>
public DialogPlayingSpeed DialogPlayingSpeed { get; set; }
#endregion
#region ScreenConfig
/// <summary>
/// 屏幕分辨率
/// </summary>
public ScreenResolutionType ScreenResolution { get; set; }
/// <summary>
/// 屏幕窗口模式
/// </summary>
public ScreenWindowType ScreenWindow { get; set; }
/// <summary>
/// 垂直同步
/// </summary>
public bool VSync { get; set; }
/// <summary>
/// 抗锯齿
/// </summary>
public bool AntiAliasing { get; set; }
#endregion
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: fca4b405240141ae845bc6cbf5f7f9d2
timeCreated: 1770692998

View File

@ -5,7 +5,7 @@
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
namespace StarForce
namespace Definition.DataStruct
{
public class VersionInfo
{

View File

@ -1,4 +1,4 @@
namespace Scene
namespace Definition.Enum
{
public enum SceneId : byte
{
@ -6,8 +6,6 @@ namespace Scene
Menu = 1,
Main = 2,
StressTest = 3,
GameplayA = 4
GameplayA = 3
}
}

View File

@ -0,0 +1,34 @@
namespace Definition.Enum
{
public enum DialogPlayingSpeed: byte
{
Slow,
Medium,
Fast,
}
public enum DialogWindowAlpha : byte
{
None,
Low,
Medium,
High
}
public enum ScreenResolutionType : byte
{
_1280x720,
_1366x768,
_1600x900,
_1920x1080,
_2560x1440,
_2560x1600
}
public enum ScreenWindowType : byte
{
Borderless,
FullScreen,
Windowed,
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 2f0f253e843b439ea057d9c2fac08bee
timeCreated: 1770691231

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ea2618629fd6bbd40a9dda07b40a0094
guid: f8a21bc21c2e2c9499f273702a5ee70d
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: d81d2a322c2e93948b4d5aa7e36c99f2
guid: 2fb9e4e2d5a6060459c5cc2eccd01021
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 8cb383e8977814343a630c164eed6c51
guid: 73d2bbb90d12eb640a9c31f53f797f63
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -0,0 +1,25 @@
using GameFramework;
using GameFramework.Event;
namespace Event
{
public class MenuContinueEventArgs : GameEventArgs
{
public static readonly int EventId = typeof(MenuContinueEventArgs).GetHashCode();
public override int Id => EventId;
public MenuContinueEventArgs()
{
}
public static MenuContinueEventArgs Create()
{
return ReferencePool.Acquire<MenuContinueEventArgs>();
}
public override void Clear()
{
}
}
}

View File

@ -1,8 +1,7 @@
fileFormatVersion: 2
guid: fc0abcc42a26c844d91d422da22eb94d
timeCreated: 1528026147
licenseType: Pro
guid: a104dcc8130e0c448ae99e6e3b54f289
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0

View File

@ -0,0 +1,25 @@
using GameFramework;
using GameFramework.Event;
namespace Event
{
public class MenuExitEventArgs : GameEventArgs
{
public static readonly int EventId = typeof(MenuExitEventArgs).GetHashCode();
public override int Id => EventId;
public MenuExitEventArgs()
{
}
public static MenuExitEventArgs Create()
{
return ReferencePool.Acquire<MenuExitEventArgs>();
}
public override void Clear()
{
}
}
}

View File

@ -1,8 +1,7 @@
fileFormatVersion: 2
guid: 278a7992e66d1ea4081597614f912f3d
timeCreated: 1528026148
licenseType: Pro
guid: b795b7493e19a03488a29937318df5e7
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0

View File

@ -0,0 +1,25 @@
using GameFramework;
using GameFramework.Event;
namespace Event
{
public class MenuSettingEventArgs : GameEventArgs
{
public static readonly int EventId = typeof(MenuSettingEventArgs).GetHashCode();
public override int Id => EventId;
public MenuSettingEventArgs()
{
}
public static MenuSettingEventArgs Create()
{
return ReferencePool.Acquire<MenuSettingEventArgs>();
}
public override void Clear()
{
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 04ec642391ce9de45bea3806a121fd76
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,25 @@
using GameFramework;
using GameFramework.Event;
namespace Event
{
public class MenuStartEventArgs : GameEventArgs
{
public static readonly int EventId = typeof(MenuStartEventArgs).GetHashCode();
public override int Id => EventId;
public MenuStartEventArgs()
{
}
public static MenuStartEventArgs Create()
{
return ReferencePool.Acquire<MenuStartEventArgs>();
}
public override void Clear()
{
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: de3b954ecd2a5b649944ca31f0c80b94
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,32 @@
using Definition.DataStruct;
using GameFramework;
using GameFramework.Event;
namespace Event
{
public class SettingSaveEventArgs : GameEventArgs
{
public static readonly int EventId = typeof(SettingSaveEventArgs).GetHashCode();
public override int Id => EventId;
public GameSetting GameSettings;
public SettingSaveEventArgs()
{
}
public static SettingSaveEventArgs Create(GameSetting gameSetting)
{
var args = ReferencePool.Acquire<SettingSaveEventArgs>();
args.GameSettings = gameSetting;
return args;
}
public override void Clear()
{
GameSettings = new GameSetting();
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 3f6cbbeb839bda744b56d83cd6ccde75
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

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

View File

@ -1,10 +1,10 @@
using CustomUtility;
using DataTable;
using Definition;
using Definition.Enum;
using GameFramework.DataTable;
using GameFramework.Event;
using Scene;
using StarForce;
using Sound;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
@ -57,7 +57,8 @@ namespace Procedure
return;
}
GameEntry.Scene.LoadScene(AssetUtility.GetSceneAsset(drScene.AssetName), Constant.AssetPriority.SceneAsset, this);
GameEntry.Scene.LoadScene(AssetUtility.GetSceneAsset(drScene.AssetName), Constant.AssetPriority.SceneAsset,
this);
_backgroundMusicId = drScene.BackgroundMusicId;
}
@ -83,6 +84,9 @@ namespace Procedure
SceneId sceneId = (SceneId)_nextSceneId;
switch (sceneId)
{
case SceneId.Menu:
ChangeState<ProcedureMenu>(procedureOwner);
break;
case SceneId.GameplayA:
ChangeState<ProcedureCombine>(procedureOwner);
break;
@ -105,7 +109,7 @@ namespace Procedure
if (_backgroundMusicId > 0)
{
GameEntry.Sound.PlayMusic(_backgroundMusicId);
GameEntry.Sound.PlayBGM(_backgroundMusicId);
}
_isChangeSceneComplete = true;
@ -141,7 +145,8 @@ namespace Procedure
return;
}
Log.Info("Load scene '{0}' dependency asset '{1}', count '{2}/{3}'.", ne.SceneAssetName, ne.DependencyAssetName, ne.LoadedCount.ToString(), ne.TotalCount.ToString());
Log.Info("Load scene '{0}' dependency asset '{1}', count '{2}/{3}'.", ne.SceneAssetName,
ne.DependencyAssetName, ne.LoadedCount.ToString(), ne.TotalCount.ToString());
}
}
}

View File

@ -5,6 +5,7 @@
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
using Definition.DataStruct;
using GameFramework;
using GameFramework.Event;
using GameFramework.Resource;

View File

@ -1,7 +1,5 @@
using GameFramework.Localization;
using System;
using Definition;
using StarForce;
using Definition;
using Sound;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
@ -18,18 +16,9 @@ namespace Procedure
// 构建信息:发布版本时,把一些数据以 Json 的格式写入 Assets/GameMain/Configs/BuildInfo.txt供游戏逻辑读取
GameEntry.BuiltinData.InitBuildInfo();
// 语言配置:设置当前使用的语言,如果不设置,则默认使用操作系统语言
InitLanguageSettings();
// 变体配置:根据使用的语言,通知底层加载对应的资源变体
InitCurrentVariant();
// 声音配置:根据用户配置数据,设置即将使用的声音选项
InitSoundSettings();
// 默认字典:加载默认字典文件 Assets/GameMain/Configs/DefaultDictionary.xml
// 此字典文件记录了资源更新前使用的各种语言的字符串,会随 App 一起发布,故不可更新
GameEntry.BuiltinData.InitDefaultDictionary();
// GameEntry.BuiltinData.InitDefaultDictionary();
}
protected override void OnUpdate(ProcedureOwner procedureOwner, float elapseSeconds, float realElapseSeconds)
@ -39,89 +28,5 @@ namespace Procedure
// 运行一帧即切换到 Splash 展示流程
ChangeState<ProcedureSplash>(procedureOwner);
}
private void InitLanguageSettings()
{
if (GameEntry.Base.EditorResourceMode && GameEntry.Base.EditorLanguage != Language.Unspecified)
{
// 编辑器资源模式直接使用 Inspector 上设置的语言
return;
}
Language language = GameEntry.Localization.Language;
if (GameEntry.Setting.HasSetting(Constant.Setting.Language))
{
try
{
string languageString = GameEntry.Setting.GetString(Constant.Setting.Language);
language = (Language)Enum.Parse(typeof(Language), languageString);
}
catch
{
}
}
if (language != Language.English
&& language != Language.ChineseSimplified
&& language != Language.ChineseTraditional
&& language != Language.Korean)
{
// 若是暂不支持的语言,则使用英语
language = Language.English;
GameEntry.Setting.SetString(Constant.Setting.Language, language.ToString());
GameEntry.Setting.Save();
}
GameEntry.Localization.Language = language;
Log.Info("Init language settings complete, current language is '{0}'.", language.ToString());
}
private void InitCurrentVariant()
{
if (GameEntry.Base.EditorResourceMode)
{
// 编辑器资源模式不使用 AssetBundle也就没有变体了
return;
}
string currentVariant = null;
switch (GameEntry.Localization.Language)
{
case Language.English:
currentVariant = "en-us";
break;
case Language.ChineseSimplified:
currentVariant = "zh-cn";
break;
case Language.ChineseTraditional:
currentVariant = "zh-tw";
break;
case Language.Korean:
currentVariant = "ko-kr";
break;
default:
currentVariant = "zh-cn";
break;
}
GameEntry.Resource.SetCurrentVariant(currentVariant);
Log.Info("Init current variant complete.");
}
private void InitSoundSettings()
{
GameEntry.Sound.Mute("Music", GameEntry.Setting.GetBool(Constant.Setting.MusicMuted, false));
GameEntry.Sound.SetVolume("Music", GameEntry.Setting.GetFloat(Constant.Setting.MusicVolume, 0.3f));
GameEntry.Sound.Mute("Sound", GameEntry.Setting.GetBool(Constant.Setting.SoundMuted, false));
GameEntry.Sound.SetVolume("Sound", GameEntry.Setting.GetFloat(Constant.Setting.SoundVolume, 1f));
GameEntry.Sound.Mute("UISound", GameEntry.Setting.GetBool(Constant.Setting.UISoundMuted, false));
GameEntry.Sound.SetVolume("UISound", GameEntry.Setting.GetFloat(Constant.Setting.UISoundVolume, 1f));
Log.Info("Init sound settings complete.");
}
}
}

View File

@ -1,13 +1,19 @@
using GameFramework;
using System;
using GameFramework;
using GameFramework.Event;
using GameFramework.Resource;
using System.Collections.Generic;
using System.Linq;
using CustomUtility;
using DataTable;
using Definition;
using Definition.Enum;
using Setting;
using Sound;
using TMPro;
using UI;
using UnityEngine;
using UnityEngine.Rendering;
using UnityGameFramework.Runtime;
using ProcedureOwner = GameFramework.Fsm.IFsm<GameFramework.Procedure.IProcedureManager>;
@ -18,11 +24,10 @@ namespace Procedure
public static readonly string[] DataTableNames = new string[]
{
"Entity",
"Music",
"BGM",
"Scene",
"Sound",
"UIForm",
"UISound",
"SE",
"Dialog",
"DialogLine"
};
@ -71,15 +76,12 @@ namespace Procedure
}
}
procedureOwner.SetData<VarInt32>("NextSceneId", GameEntry.Config.GetInt("Scene.GameplayA"));
procedureOwner.SetData<VarInt32>("NextSceneId", (int)SceneId.Menu);
ChangeState<ProcedureChangeScene>(procedureOwner);
}
private void PreloadResources()
{
// Preload configs
LoadConfig("DefaultConfig");
// Preload data tables
foreach (string dataTableName in DataTableNames)
{
@ -87,18 +89,13 @@ namespace Procedure
}
// Preload dictionaries
LoadDictionary("Default");
// LoadDictionary("Default");
// Preload fonts
LoadFont("MainFont");
LoadTMPFont("MainTMPFont");
}
private void LoadConfig(string configName)
{
string configAssetName = AssetUtility.GetConfigAsset(configName, false);
_loadedFlag.Add(configAssetName, false);
GameEntry.Config.ReadData(configAssetName, this);
LoadSetting();
}
private void LoadDataTable(string dataTableName)
@ -118,37 +115,114 @@ namespace Procedure
private void LoadFont(string fontName)
{
_loadedFlag.Add(Utility.Text.Format("Font.{0}", fontName), false);
GameEntry.Resource.LoadAsset(AssetUtility.GetFontAsset(fontName), Constant.AssetPriority.FontAsset, new LoadAssetCallbacks(
GameEntry.Resource.LoadAsset(AssetUtility.GetFontAsset(fontName), Constant.AssetPriority.FontAsset,
new LoadAssetCallbacks(
(assetName, asset, duration, userData) =>
{
_loadedFlag[Utility.Text.Format("Font.{0}", fontName)] = true;
UGuiForm.SetMainFont((Font)asset);
Log.Info("Load font '{0}' OK.", fontName);
},
(assetName, status, errorMessage, userData) =>
{
Log.Error("Can not load font '{0}' from '{1}' with error message '{2}'.", fontName, assetName, errorMessage);
Log.Error("Can not load font '{0}' from '{1}' with error message '{2}'.", fontName, assetName,
errorMessage);
}));
}
private void LoadTMPFont(string fontName)
{
_loadedFlag.Add(Utility.Text.Format("Font.{0}", fontName), false);
GameEntry.Resource.LoadAsset(AssetUtility.GetTMPFontAsset(fontName), Constant.AssetPriority.FontAsset, new LoadAssetCallbacks(
GameEntry.Resource.LoadAsset(AssetUtility.GetTMPFontAsset(fontName), Constant.AssetPriority.FontAsset,
new LoadAssetCallbacks(
(assetName, asset, duration, userData) =>
{
_loadedFlag[Utility.Text.Format("Font.{0}", fontName)] = true;
UGuiForm.SetMainTMPFont((TMP_FontAsset)asset);
Log.Info("Load font '{0}' OK.", fontName);
},
(assetName, status, errorMessage, userData) =>
{
Log.Error("Can not load font '{0}' from '{1}' with error message '{2}'.", fontName, assetName, errorMessage);
Log.Error("Can not load font '{0}' from '{1}' with error message '{2}'.", fontName, assetName,
errorMessage);
}));
}
private void LoadSetting()
{
var setting = GameEntry.Setting.GetGameSetting();
GameEntry.Sound.SetVolume("BGM", setting.BGMVolume);
GameEntry.Sound.SetVolume("SE", setting.SEVolume);
ScreenResolutionType resolution = setting.ScreenResolution;
int width = 0, height = 0;
switch (resolution)
{
case ScreenResolutionType._1280x720:
width = 1280;
height = 720;
break;
case ScreenResolutionType._1366x768:
width = 1366;
height = 768;
break;
case ScreenResolutionType._1600x900:
width = 1600;
height = 900;
break;
case ScreenResolutionType._1920x1080:
width = 1920;
height = 1080;
break;
case ScreenResolutionType._2560x1440:
width = 2560;
height = 1440;
break;
case ScreenResolutionType._2560x1600:
width = 2560;
height = 1600;
break;
default:
throw new ArgumentOutOfRangeException();
}
ScreenWindowType resolutionWindow = setting.ScreenWindow;
switch (resolutionWindow)
{
case ScreenWindowType.FullScreen:
Screen.SetResolution(width, height, FullScreenMode.ExclusiveFullScreen);
break;
case ScreenWindowType.Borderless:
Screen.SetResolution(width, height, FullScreenMode.FullScreenWindow);
break;
case ScreenWindowType.Windowed:
Screen.SetResolution(width, height, FullScreenMode.Windowed);
break;
default:
throw new ArgumentOutOfRangeException();
}
Application.targetFrameRate = -1;
QualitySettings.vSyncCount = setting.VSync ? 1 : 0;
if (setting.AntiAliasing)
{
foreach (var asset in GraphicsSettings.allConfiguredRenderPipelines)
{
if (asset.name == "URP-AntiAliasing") GraphicsSettings.renderPipelineAsset = asset;
}
}
else
{
foreach (var asset in GraphicsSettings.allConfiguredRenderPipelines)
{
if (asset.name == "URP-Normal") GraphicsSettings.renderPipelineAsset = asset;
}
}
}
#region Event Hanlders
private void OnLoadConfigSuccess(object sender, GameEventArgs e)
{
LoadConfigSuccessEventArgs ne = (LoadConfigSuccessEventArgs)e;
@ -169,7 +243,8 @@ namespace Procedure
return;
}
Log.Error("Can not load config '{0}' from '{1}' with error message '{2}'.", ne.ConfigAssetName, ne.ConfigAssetName, ne.ErrorMessage);
Log.Error("Can not load config '{0}' from '{1}' with error message '{2}'.", ne.ConfigAssetName,
ne.ConfigAssetName, ne.ErrorMessage);
}
private void OnLoadDataTableSuccess(object sender, GameEventArgs e)
@ -192,7 +267,8 @@ namespace Procedure
return;
}
Log.Error("Can not load data table '{0}' from '{1}' with error message '{2}'.", ne.DataTableAssetName, ne.DataTableAssetName, ne.ErrorMessage);
Log.Error("Can not load data table '{0}' from '{1}' with error message '{2}'.", ne.DataTableAssetName,
ne.DataTableAssetName, ne.ErrorMessage);
}
private void OnLoadDictionarySuccess(object sender, GameEventArgs e)
@ -215,7 +291,10 @@ namespace Procedure
return;
}
Log.Error("Can not load dictionary '{0}' from '{1}' with error message '{2}'.", ne.DictionaryAssetName, ne.DictionaryAssetName, ne.ErrorMessage);
}
Log.Error("Can not load dictionary '{0}' from '{1}' with error message '{2}'.", ne.DictionaryAssetName,
ne.DictionaryAssetName, ne.ErrorMessage);
}
#endregion
}
}

View File

@ -1,7 +1,6 @@
using Scene;
using Definition.Enum;
using System.Collections.Generic;
using CustomComponent;
using Definition.Enum;
using Event;
using GameFramework.Event;
using UI;

View File

@ -0,0 +1,18 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ProcedureMain : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: b86c72387528b8e4993ed9c395825d0a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,210 @@
using System;
using Definition.DataStruct;
using Definition.Enum;
using Event;
using GameFramework.Event;
using GameFramework.Fsm;
using GameFramework.Procedure;
using Setting;
using Sound;
using UI;
using UnityEngine;
using UnityEngine.Rendering;
using UnityGameFramework.Runtime;
namespace Procedure
{
public class ProcedureMenu : ProcedureBase
{
public override bool UseNativeDialog => false;
private MenuFormController _menuFormController;
private SettingFormController _settingFormController;
private const string SettingPrefix = "Setting.";
private bool _gameStarted = false;
private void StartGame()
{
if (_gameStarted) return;
_gameStarted = true;
}
private void LoadGame()
{
}
private void OpenSettingForm()
{
if (_settingFormController == null)
{
_settingFormController = new SettingFormController();
}
var settingContext = new SettingFormContext
{
Setting = GameEntry.Setting.GetGameSetting()
};
_settingFormController.OpenUI(settingContext);
}
private void ExitGame()
{
Application.Quit();
}
#region FSM
protected override void OnEnter(IFsm<IProcedureManager> procedureOwner)
{
base.OnEnter(procedureOwner);
var e = GameEntry.Event;
e.Subscribe(MenuStartEventArgs.EventId, MenuStart);
e.Subscribe(MenuContinueEventArgs.EventId, MenuContinue);
e.Subscribe(MenuSettingEventArgs.EventId, MenuSetting);
e.Subscribe(MenuExitEventArgs.EventId, MenuExit);
e.Subscribe(SettingSaveEventArgs.EventId, SettingSave);
_menuFormController = new MenuFormController();
_menuFormController.OpenUI(new MenuFormContext());
}
protected override void OnLeave(IFsm<IProcedureManager> procedureOwner, bool isShutdown)
{
_menuFormController?.CloseUI();
_settingFormController?.CloseUI();
var e = GameEntry.Event;
e.Unsubscribe(MenuStartEventArgs.EventId, MenuStart);
e.Unsubscribe(MenuContinueEventArgs.EventId, MenuContinue);
e.Unsubscribe(MenuSettingEventArgs.EventId, MenuSetting);
e.Unsubscribe(MenuExitEventArgs.EventId, MenuExit);
e.Unsubscribe(SettingSaveEventArgs.EventId, SettingSave);
base.OnLeave(procedureOwner, isShutdown);
}
protected override void OnUpdate(IFsm<IProcedureManager> procedureOwner, float elapseSeconds,
float realElapseSeconds)
{
base.OnUpdate(procedureOwner, elapseSeconds, realElapseSeconds);
if (_gameStarted)
{
procedureOwner.SetData<VarInt32>("NextSceneId", (int)SceneId.GameplayA);
ChangeState<ProcedureChangeScene>(procedureOwner);
}
}
#endregion
#region Event Handlers
private void MenuStart(object sender, GameEventArgs e)
{
if (!(e is MenuStartEventArgs)) return;
StartGame();
}
private void MenuContinue(object sender, GameEventArgs e)
{
if (!(e is MenuContinueEventArgs)) return;
LoadGame();
}
private void MenuSetting(object sender, GameEventArgs e)
{
if (!(e is MenuSettingEventArgs)) return;
OpenSettingForm();
}
private void MenuExit(object sender, GameEventArgs e)
{
if (!(e is MenuExitEventArgs)) return;
ExitGame();
}
private void SettingSave(object sender, GameEventArgs e)
{
if (!(e is SettingSaveEventArgs args)) return;
GameEntry.Sound.SetVolume("BGM", args.GameSettings.BGMVolume);
GameEntry.Sound.SetVolume("SE", args.GameSettings.SEVolume);
ScreenResolutionType resolution = args.GameSettings.ScreenResolution;
int width = 0, height = 0;
switch (resolution)
{
case ScreenResolutionType._1280x720:
width = 1280;
height = 720;
break;
case ScreenResolutionType._1366x768:
width = 1366;
height = 768;
break;
case ScreenResolutionType._1600x900:
width = 1600;
height = 900;
break;
case ScreenResolutionType._1920x1080:
width = 1920;
height = 1080;
break;
case ScreenResolutionType._2560x1440:
width = 2560;
height = 1440;
break;
case ScreenResolutionType._2560x1600:
width = 2560;
height = 1600;
break;
default:
throw new ArgumentOutOfRangeException();
}
ScreenWindowType resolutionWindow = args.GameSettings.ScreenWindow;
switch (resolutionWindow)
{
case ScreenWindowType.FullScreen:
Screen.SetResolution(width, height, FullScreenMode.ExclusiveFullScreen);
break;
case ScreenWindowType.Borderless:
Screen.SetResolution(width, height, FullScreenMode.FullScreenWindow);
break;
case ScreenWindowType.Windowed:
Screen.SetResolution(width, height, FullScreenMode.Windowed);
break;
default:
throw new ArgumentOutOfRangeException();
}
if (args.GameSettings.AntiAliasing)
{
foreach (var asset in GraphicsSettings.allConfiguredRenderPipelines)
{
if (asset.name == "URP-AntiAliasing") GraphicsSettings.renderPipelineAsset = asset;
}
}
else
{
foreach (var asset in GraphicsSettings.allConfiguredRenderPipelines)
{
if (asset.name == "URP-Normal") GraphicsSettings.renderPipelineAsset = asset;
}
}
Application.targetFrameRate = -1;
QualitySettings.vSyncCount = args.GameSettings.VSync ? 1 : 0;
GameEntry.Setting.SaveSetting(args.GameSettings);
}
#endregion
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a8c39c93ba7eab0478a50fc0b1370458
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ae5528a06773f5a45b75a99f619c2e22
guid: 3a0a74a6b4e028e43942f2ea78733e72
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -0,0 +1,50 @@
using System.Data;
using Definition;
using Definition.DataStruct;
using Definition.Enum;
using UnityGameFramework.Runtime;
namespace Setting
{
public static class SettingExtension
{
public static GameSetting GetGameSetting(this SettingComponent setting)
{
var data = new GameSetting
{
BGMVolume = setting.GetFloat(Constant.Setting.BGMVolume, 0.6f),
SEVolume = setting.GetFloat(Constant.Setting.SEVolume, 0.6f),
AllowShake = setting.GetBool(Constant.Setting.AllowShake, true),
AllowBlink = setting.GetBool(Constant.Setting.AllowBlink, true),
DialogWindowAlpha = (DialogWindowAlpha)setting.GetInt(Constant.Setting.DialogWindowAlpha, 2),
DialogPlayingSpeed = (DialogPlayingSpeed)setting.GetInt(Constant.Setting.DialogPlayingSpeed, 1),
ScreenResolution = (ScreenResolutionType)setting.GetInt(Constant.Setting.ScreenSolution, 1),
ScreenWindow = (ScreenWindowType)setting.GetInt(Constant.Setting.ScreenWindow, 2),
VSync = setting.GetBool(Constant.Setting.VSync, true),
AntiAliasing = setting.GetBool(Constant.Setting.AntiAliasing, true)
};
return data;
}
public static void SaveSetting(this SettingComponent setting, GameSetting data)
{
setting.SetFloat(Constant.Setting.BGMVolume, data.BGMVolume);
setting.SetFloat(Constant.Setting.SEVolume, data.SEVolume);
setting.SetBool(Constant.Setting.AllowShake, data.AllowShake);
setting.SetBool(Constant.Setting.AllowBlink, data.AllowBlink);
setting.SetInt(Constant.Setting.DialogWindowAlpha, (int)data.DialogWindowAlpha);
setting.SetInt(Constant.Setting.DialogPlayingSpeed, (int)data.DialogPlayingSpeed);
setting.SetInt(Constant.Setting.ScreenSolution, (int)data.ScreenResolution);
setting.SetInt(Constant.Setting.ScreenWindow, (int)data.ScreenWindow);
setting.SetBool(Constant.Setting.VSync, data.VSync);
setting.SetBool(Constant.Setting.AntiAliasing, data.AntiAliasing);
setting.Save();
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: acd08b891a6e4844eb115250d0af9b61
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,33 +1,25 @@
//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
// Homepage: https://gameframework.cn/
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
using CustomUtility;
using CustomUtility;
using DataTable;
using Definition;
using Entity;
using GameFramework;
using GameFramework.DataTable;
using GameFramework.Sound;
using UnityGameFramework.Runtime;
namespace StarForce
namespace Sound
{
public static class SoundExtension
{
private const float FadeVolumeDuration = 1f;
private static int? s_MusicSerialId = null;
public static int? PlayMusic(this SoundComponent soundComponent, int musicId, object userData = null)
public static int? PlayBGM(this SoundComponent soundComponent, int musicId, object userData = null)
{
soundComponent.StopMusic();
IDataTable<DRMusic> dtMusic = GameEntry.DataTable.GetDataTable<DRMusic>();
DRMusic drMusic = dtMusic.GetDataRow(musicId);
if (drMusic == null)
IDataTable<DRBGM> dtMusic = GameEntry.DataTable.GetDataTable<DRBGM>();
DRBGM drBgm = dtMusic.GetDataRow(musicId);
if (drBgm == null)
{
Log.Warning("Can not load music '{0}' from data table.", musicId.ToString());
return null;
@ -39,7 +31,8 @@ namespace StarForce
playSoundParams.VolumeInSoundGroup = 1f;
playSoundParams.FadeInSeconds = FadeVolumeDuration;
playSoundParams.SpatialBlend = 0f;
s_MusicSerialId = soundComponent.PlaySound(AssetUtility.GetMusicAsset(drMusic.AssetName), "Music", Constant.AssetPriority.MusicAsset, playSoundParams, null, userData);
s_MusicSerialId = soundComponent.PlaySound(AssetUtility.GetMusicAsset(drBgm.AssetName), "BGM",
Constant.AssetPriority.MusicAsset, playSoundParams, null, userData);
return s_MusicSerialId;
}
@ -54,28 +47,10 @@ namespace StarForce
s_MusicSerialId = null;
}
public static int? PlaySound(this SoundComponent soundComponent, int soundId, EntityBase bindingEntity = null, object userData = null)
public static int? PlaySE(this SoundComponent soundComponent, int uiSoundId, object userData = null)
{
IDataTable<DRSound> dtSound = GameEntry.DataTable.GetDataTable<DRSound>();
DRSound drSound = dtSound.GetDataRow(soundId);
if (drSound == null)
{
Log.Warning("Can not load sound '{0}' from data table.", soundId.ToString());
return null;
}
PlaySoundParams playSoundParams = PlaySoundParams.Create();
playSoundParams.Priority = drSound.Priority;
playSoundParams.Loop = drSound.Loop;
playSoundParams.VolumeInSoundGroup = drSound.Volume;
playSoundParams.SpatialBlend = drSound.SpatialBlend;
return soundComponent.PlaySound(AssetUtility.GetSoundAsset(drSound.AssetName), "Sound", Constant.AssetPriority.SoundAsset, playSoundParams, bindingEntity != null ? bindingEntity.Entity : null, userData);
}
public static int? PlayUISound(this SoundComponent soundComponent, int uiSoundId, object userData = null)
{
IDataTable<DRUISound> dtUISound = GameEntry.DataTable.GetDataTable<DRUISound>();
DRUISound drUISound = dtUISound.GetDataRow(uiSoundId);
IDataTable<DRSE> dtUISound = GameEntry.DataTable.GetDataTable<DRSE>();
DRSE drUISound = dtUISound.GetDataRow(uiSoundId);
if (drUISound == null)
{
Log.Warning("Can not load UI sound '{0}' from data table.", uiSoundId.ToString());
@ -87,46 +62,8 @@ namespace StarForce
playSoundParams.Loop = false;
playSoundParams.VolumeInSoundGroup = drUISound.Volume;
playSoundParams.SpatialBlend = 0f;
return soundComponent.PlaySound(AssetUtility.GetUISoundAsset(drUISound.AssetName), "UISound", Constant.AssetPriority.UISoundAsset, playSoundParams, userData);
}
public static bool IsMuted(this SoundComponent soundComponent, string soundGroupName)
{
if (string.IsNullOrEmpty(soundGroupName))
{
Log.Warning("Sound group is invalid.");
return true;
}
ISoundGroup soundGroup = soundComponent.GetSoundGroup(soundGroupName);
if (soundGroup == null)
{
Log.Warning("Sound group '{0}' is invalid.", soundGroupName);
return true;
}
return soundGroup.Mute;
}
public static void Mute(this SoundComponent soundComponent, string soundGroupName, bool mute)
{
if (string.IsNullOrEmpty(soundGroupName))
{
Log.Warning("Sound group is invalid.");
return;
}
ISoundGroup soundGroup = soundComponent.GetSoundGroup(soundGroupName);
if (soundGroup == null)
{
Log.Warning("Sound group '{0}' is invalid.", soundGroupName);
return;
}
soundGroup.Mute = mute;
GameEntry.Setting.SetBool(Utility.Text.Format(Constant.Setting.SoundGroupMuted, soundGroupName), mute);
GameEntry.Setting.Save();
return soundComponent.PlaySound(AssetUtility.GetUISoundAsset(drUISound.AssetName), "SE",
Constant.AssetPriority.UISoundAsset, playSoundParams, userData);
}
public static float GetVolume(this SoundComponent soundComponent, string soundGroupName)
@ -164,7 +101,7 @@ namespace StarForce
soundGroup.Volume = volume;
GameEntry.Setting.SetFloat(Utility.Text.Format(Constant.Setting.SoundGroupVolume, soundGroupName), volume);
GameEntry.Setting.SetFloat($"Setting.{soundGroup}Volume", volume);
GameEntry.Setting.Save();
}
}

View File

@ -4,7 +4,7 @@ namespace UI
{
public class DialogFormContext : UIContext
{
public float PlayingSpeed = 1f;
public DialogPlayingSpeed PlayingSpeed = DialogPlayingSpeed.Medium;
public int ChapterId = 0;
public int DialogId = 0;
@ -22,5 +22,7 @@ namespace UI
public int LineIndex = -1;
public int TotalLines = 0;
public bool IsLastLine = false;
public DialogWindowAlpha DialogWindowAlpha = DialogWindowAlpha.Medium;
}
}

View File

@ -0,0 +1,7 @@
namespace UI
{
public class MenuFormContext : UIContext
{
public bool HasGameData = false;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d8cdd22c948028246b9d1d7afd80f08c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,13 @@
using System.Collections;
using System.Collections.Generic;
using Definition.DataStruct;
using UnityEngine;
namespace UI
{
public class SettingFormContext : UIContext
{
public SettingFormController Controller;
public GameSetting Setting;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: c2754dbcd65873f4b9d3f579c12cef58
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More