├── ProjectSettings
├── ProjectVersion.txt
├── ClusterInputManager.asset
├── NetworkManager.asset
├── TimeManager.asset
├── EditorBuildSettings.asset
├── AudioManager.asset
├── TagManager.asset
├── EditorSettings.asset
├── PresetManager.asset
├── UnityConnectSettings.asset
├── DynamicsManager.asset
├── Physics2DSettings.asset
├── NavMeshAreas.asset
├── GraphicsSettings.asset
├── QualitySettings.asset
├── InputManager.asset
└── ProjectSettings.asset
├── Assets
├── RichTextHelper
│ ├── RichTextHelperAssembly.asmdef
│ ├── RichTextHelperAssembly.asmdef.meta
│ ├── RichTextHelper.cs.meta
│ └── RichTextHelper.cs
├── Scenes.meta
├── Scenes
│ ├── SampleScene.unity.meta
│ └── SampleScene.unity
├── test.meta
├── test
│ ├── Tests.asmdef.meta
│ ├── RichTextHelperTest.cs.meta
│ ├── Tests.asmdef
│ └── RichTextHelperTest.cs
└── RichTextHelper.meta
├── .gitignore
├── Packages
└── manifest.json
└── README.md
/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2018.2.15f1
2 |
--------------------------------------------------------------------------------
/Assets/RichTextHelper/RichTextHelperAssembly.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "RichTextHelperAssembly"
3 | }
4 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/Assets/Scenes.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 4f704ae4b4f98ae41a0bce26658850c1
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/Scenes/SampleScene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 99c9720ab356a0642a771bea13969a05
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Assets/test.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2974dea7156ea1f4f97b05d0769fd5fe
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/test/Tests.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b2917b77b98923b45a0e6cf2b77044c1
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/ProjectSettings/NetworkManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!149 &1
4 | NetworkManager:
5 | m_ObjectHideFlags: 0
6 | m_DebugLevel: 0
7 | m_Sendrate: 15
8 | m_AssetToPrefab: {}
9 |
--------------------------------------------------------------------------------
/Assets/RichTextHelper.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: e8e80b1a8748b204e8208d986f88b1b1
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Assets/RichTextHelper/RichTextHelperAssembly.asmdef.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 467ce31648eccf842a07dc81b99e626d
3 | AssemblyDefinitionImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/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.1
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/Assets/test/RichTextHelperTest.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 589c501acd18ae8408cf9c7aa8acd7f0
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/RichTextHelper/RichTextHelper.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 99fa8d70b877b6943b60c36bb76fb2b9
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Assets/test/Tests.asmdef:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Tests",
3 | "references": [
4 | "RichTextHelperAssembly"
5 | ],
6 | "optionalUnityReferences": [
7 | "TestAssemblies"
8 | ],
9 | "includePlatforms": [
10 | "Editor"
11 | ],
12 | "excludePlatforms": [],
13 | "allowUnsafeCode": false
14 | }
--------------------------------------------------------------------------------
/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 | - enabled: 1
9 | path: Assets/Scenes/SampleScene.unity
10 | guid: 99c9720ab356a0642a771bea13969a05
11 | m_configObjects: {}
12 |
--------------------------------------------------------------------------------
/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 | m_Volume: 1
7 | Rolloff Scale: 1
8 | Doppler Factor: 1
9 | Default Speaker Mode: 2
10 | m_SampleRate: 0
11 | m_DSPBufferSize: 1024
12 | m_VirtualVoiceCount: 512
13 | m_RealVoiceCount: 32
14 | m_SpatializerPlugin:
15 | m_AmbisonicDecoderPlugin:
16 | m_DisableAudio: 0
17 | m_VirtualizeEffects: 1
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /[Ll]ibrary/
2 | /[Tt]emp/
3 | /[Oo]bj/
4 | /[Bb]uild/
5 | /[Bb]uilds/
6 | /Assets/AssetStoreTools*
7 |
8 | # Visual Studio cache directory
9 | .vs/
10 |
11 | # Autogenerated VS/MD/Consulo solution and project files
12 | ExportedObj/
13 | .consulo/
14 | *.csproj
15 | *.unityproj
16 | *.sln
17 | *.suo
18 | *.tmp
19 | *.user
20 | *.userprefs
21 | *.pidb
22 | *.booproj
23 | *.svd
24 | *.pdb
25 | *.opendb
26 | *.VC.db
27 |
28 | # Unity3D generated meta files
29 | *.pidb.meta
30 | *.pdb.meta
31 |
32 | # Unity3D Generated File On Crash Reports
33 | sysinfo.txt
34 |
35 | # Builds
36 | *.apk
37 | *.unitypackage
--------------------------------------------------------------------------------
/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 | - PostProcessing
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/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: 7
7 | m_ExternalVersionControlSupport: Visible Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 2
10 | m_DefaultBehaviorMode: 0
11 | m_SpritePackerMode: 0
12 | m_SpritePackerPaddingPower: 1
13 | m_EtcTextureCompressorBehavior: 1
14 | m_EtcTextureFastCompressor: 1
15 | m_EtcTextureNormalCompressor: 2
16 | m_EtcTextureBestCompressor: 4
17 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd
18 | m_ProjectGenerationRootNamespace:
19 | m_UserGeneratedProjectSuffix:
20 | m_CollabEditorSettings:
21 | inProgressEnabled: 1
22 |
--------------------------------------------------------------------------------
/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 | m_DefaultList:
7 | - type:
8 | m_NativeTypeID: 108
9 | m_ManagedTypePPtr: {fileID: 0}
10 | m_ManagedTypeFallback:
11 | defaultPresets:
12 | - m_Preset: {fileID: 2655988077585873504, guid: c1cf8506f04ef2c4a88b64b6c4202eea,
13 | type: 2}
14 | - type:
15 | m_NativeTypeID: 1020
16 | m_ManagedTypePPtr: {fileID: 0}
17 | m_ManagedTypeFallback:
18 | defaultPresets:
19 | - m_Preset: {fileID: 2655988077585873504, guid: 0cd792cc87e492d43b4e95b205fc5cc6,
20 | type: 2}
21 | - type:
22 | m_NativeTypeID: 1006
23 | m_ManagedTypePPtr: {fileID: 0}
24 | m_ManagedTypeFallback:
25 | defaultPresets:
26 | - m_Preset: {fileID: 2655988077585873504, guid: 7a99f8aa944efe94cb9bd74562b7d5f9,
27 | type: 2}
28 |
--------------------------------------------------------------------------------
/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 | m_Enabled: 0
7 | m_TestMode: 0
8 | m_TestEventUrl:
9 | m_TestConfigUrl:
10 | m_TestInitMode: 0
11 | CrashReportingSettings:
12 | m_EventUrl: https://perf-events.cloud.unity3d.com/api/events/crashes
13 | m_NativeEventUrl: https://perf-events.cloud.unity3d.com/symbolicate
14 | m_Enabled: 0
15 | m_CaptureEditorExceptions: 1
16 | UnityPurchasingSettings:
17 | m_Enabled: 0
18 | m_TestMode: 0
19 | UnityAnalyticsSettings:
20 | m_Enabled: 0
21 | m_InitializeOnStartup: 1
22 | m_TestMode: 0
23 | m_TestEventUrl:
24 | m_TestConfigUrl:
25 | UnityAdsSettings:
26 | m_Enabled: 0
27 | m_InitializeOnStartup: 1
28 | m_TestMode: 0
29 | m_IosGameId:
30 | m_AndroidGameId:
31 | m_GameIds: {}
32 | m_GameId:
33 | PerformanceReportingSettings:
34 | m_Enabled: 0
35 |
--------------------------------------------------------------------------------
/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: 7
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: 1
23 | m_ClothInterCollisionSettingsToggle: 0
24 | m_ContactPairsMode: 0
25 | m_BroadphaseType: 0
26 | m_WorldBounds:
27 | m_Center: {x: 0, y: 0, z: 0}
28 | m_Extent: {x: 250, y: 250, z: 250}
29 | m_WorldSubdivisions: 8
30 |
--------------------------------------------------------------------------------
/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: 3
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_AutoSimulation: 1
23 | m_QueriesHitTriggers: 1
24 | m_QueriesStartInColliders: 1
25 | m_ChangeStopsCallbacks: 0
26 | m_CallbacksOnDisable: 1
27 | m_AutoSyncTransforms: 1
28 | m_AlwaysShowColliders: 0
29 | m_ShowColliderSleep: 1
30 | m_ShowColliderContacts: 0
31 | m_ShowColliderAABB: 0
32 | m_ContactArrowScale: 0.2
33 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
34 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
35 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
36 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
37 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
38 |
--------------------------------------------------------------------------------
/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.ads": "2.0.8",
4 | "com.unity.analytics": "2.0.16",
5 | "com.unity.package-manager-ui": "1.9.11",
6 | "com.unity.purchasing": "2.0.3",
7 | "com.unity.textmeshpro": "1.2.4",
8 | "com.unity.modules.ai": "1.0.0",
9 | "com.unity.modules.animation": "1.0.0",
10 | "com.unity.modules.assetbundle": "1.0.0",
11 | "com.unity.modules.audio": "1.0.0",
12 | "com.unity.modules.cloth": "1.0.0",
13 | "com.unity.modules.director": "1.0.0",
14 | "com.unity.modules.imageconversion": "1.0.0",
15 | "com.unity.modules.imgui": "1.0.0",
16 | "com.unity.modules.jsonserialize": "1.0.0",
17 | "com.unity.modules.particlesystem": "1.0.0",
18 | "com.unity.modules.physics": "1.0.0",
19 | "com.unity.modules.physics2d": "1.0.0",
20 | "com.unity.modules.screencapture": "1.0.0",
21 | "com.unity.modules.terrain": "1.0.0",
22 | "com.unity.modules.terrainphysics": "1.0.0",
23 | "com.unity.modules.tilemap": "1.0.0",
24 | "com.unity.modules.ui": "1.0.0",
25 | "com.unity.modules.uielements": "1.0.0",
26 | "com.unity.modules.umbra": "1.0.0",
27 | "com.unity.modules.unityanalytics": "1.0.0",
28 | "com.unity.modules.unitywebrequest": "1.0.0",
29 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
30 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
31 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
32 | "com.unity.modules.unitywebrequestwww": "1.0.0",
33 | "com.unity.modules.vehicles": "1.0.0",
34 | "com.unity.modules.video": "1.0.0",
35 | "com.unity.modules.vr": "1.0.0",
36 | "com.unity.modules.wind": "1.0.0",
37 | "com.unity.modules.xr": "1.0.0"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/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 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Unity3dRichTextHelper
2 | This library helps you get substring of unity3d's rich text. You can use this to implement a dialogue system
3 |
4 | ## How to use(simple)
5 | ```csharp
6 |
7 | using RichTextSubstringHelper;
8 |
9 | var richText = "blueblack";
10 | richText.RichTextSubString(3); // blu
11 | richText.RichTextSubString(6); // bluebl
12 | ```
13 |
14 | When you want to make a dialogue system, displaying richtext may cause a trouble.
15 | 
16 |
17 | This library helps you get substring of richtext easily.
18 |
19 | ## How to Install
20 |
21 | Get unity package from below link
22 |
23 | https://github.com/majecty/Unity3dRichTextHelper/releases
24 |
25 | Or just copy and paste this file
26 |
27 | https://github.com/majecty/Unity3dRichTextHelper/blob/master/Assets/RichTextHelper/RichTextHelper.cs
28 |
29 | ## More example
30 | ```csharp
31 | using System.Collections;
32 | using UnityEngine;
33 | using UnityEngine.UI;
34 | using RichTextSubstringHelper;
35 |
36 | public class NewBehaviourScript : MonoBehaviour {
37 | [SerializeField]
38 | Text uiText;
39 | IEnumerator Start () {
40 | var firstText = "blahx";
41 | for (int i = 0; i < firstText.RichTextLength(); i++)
42 | {
43 | yield return new WaitForSeconds(0.5f);
44 | uiText.text = firstText.RichTextSubString(i + 1);
45 | }
46 | }
47 |
48 | }
49 | ```
50 |
51 | ## Performance
52 |
53 | `richText.RichTextSubString(i)` takes O(i) time because it should read string character by character every time.
54 |
55 | If you consider performance, use like below example.
56 |
57 | ```csharp
58 | using System.Collections;
59 | using UnityEngine;
60 | using RichTextSubstringHelper;
61 | using UnityEngine.UI;
62 |
63 | public class NewBehaviourScript : MonoBehaviour {
64 | [SerializeField]
65 | Text uiText;
66 |
67 | IEnumerator Start ()
68 | {
69 | var richText = "blueblack";
70 | var maker = new RichTextSubStringMaker(richText);
71 |
72 | while (maker.IsConsumable())
73 | {
74 | maker.Consume();
75 | uiText.text = maker.GetRichText();
76 | yield return new WaitForSeconds(0.5f);
77 | }
78 | }
79 | }
80 |
81 | ```
82 |
83 |
84 |
--------------------------------------------------------------------------------
/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: 12
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 | - {fileID: 10783, guid: 0000000000000000f000000000000000, type: 0}
39 | m_PreloadedShaders: []
40 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
41 | type: 0}
42 | m_CustomRenderPipeline: {fileID: 0}
43 | m_TransparencySortMode: 0
44 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
45 | m_DefaultRenderingPath: 1
46 | m_DefaultMobileRenderingPath: 1
47 | m_TierSettings: []
48 | m_LightmapStripping: 0
49 | m_FogStripping: 0
50 | m_InstancingStripping: 0
51 | m_LightmapKeepPlain: 1
52 | m_LightmapKeepDirCombined: 1
53 | m_LightmapKeepDynamicPlain: 1
54 | m_LightmapKeepDynamicDirCombined: 1
55 | m_LightmapKeepShadowMask: 1
56 | m_LightmapKeepSubtractive: 1
57 | m_FogKeepLinear: 1
58 | m_FogKeepExp: 1
59 | m_FogKeepExp2: 1
60 | m_AlbedoSwatchInfos: []
61 | m_LightsUseLinearIntensity: 0
62 | m_LightsUseColorTemperature: 0
63 |
--------------------------------------------------------------------------------
/Assets/test/RichTextHelperTest.cs:
--------------------------------------------------------------------------------
1 | // Copyright 2018 Park Juhyung
2 | // Permission is hereby granted, free of charge, to any person obtaining a
3 | // copy of this software and associated documentation files (the "Software"),
4 | // to deal in the Software without restriction, including without limitation
5 | // the rights to use, copy, modify, merge, publish, distribute, sublicense,
6 | // and/or sell copies of the Software, and to permit persons to whom the
7 | // Software is furnished to do so, subject to the following conditions:
8 | //
9 | // The above copyright notice and this permission notice shall be included in
10 | // all copies or substantial portions of the Software.
11 | //
12 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18 | // DEALINGS IN THE SOFTWARE.
19 |
20 | using UnityEngine;
21 | using UnityEngine.TestTools;
22 | using NUnit.Framework;
23 | using System.Collections;
24 | using RichTextSubstringHelper;
25 |
26 | public class RichTextHelperTest
27 | {
28 | [Test]
29 | public void SimpleTest() {
30 | Assert.AreEqual("a".RichTextSubString(0), "");
31 | Assert.AreEqual("a".RichTextSubString(1), "a");
32 |
33 | var sampleText = "UnityTest behaves ";
34 | Assert.AreEqual(sampleText.RichTextSubString(sampleText.Length), sampleText);
35 | Assert.AreEqual(sampleText.RichTextLength(), sampleText.Length);
36 | }
37 |
38 | [Test]
39 | public void TagTest()
40 | {
41 | var sampleTagText = "blahx";
42 | Assert.AreEqual(sampleTagText.RichTextSubString(5), sampleTagText);
43 | Assert.AreEqual(sampleTagText.RichTextSubString(1), "b");
44 | Assert.AreEqual(sampleTagText.RichTextLength(), 5);
45 | }
46 |
47 | [Test]
48 | public void NestedTest()
49 | {
50 | var sampleTagText = "abcde";
51 | Assert.AreEqual(sampleTagText.RichTextSubString(5), sampleTagText);
52 | Assert.AreEqual(sampleTagText.RichTextSubString(1), "a");
53 | Assert.AreEqual(sampleTagText.RichTextSubString(2), "ab");
54 | Assert.AreEqual(sampleTagText.RichTextSubString(3), "abc");
55 | Assert.AreEqual(sampleTagText.RichTextSubString(4), "abcd");
56 | Assert.AreEqual(sampleTagText.RichTextLength(), 5);
57 | }
58 |
59 | [Test]
60 | public void CloseTagIsLast()
61 | {
62 | var sampleTagText = "abcd";
63 | Assert.AreEqual(sampleTagText.RichTextSubString(5), sampleTagText);
64 | Assert.AreEqual(sampleTagText.RichTextSubString(1), "a");
65 | Assert.AreEqual(sampleTagText.RichTextSubString(2), "ab");
66 | Assert.AreEqual(sampleTagText.RichTextSubString(3), "abc");
67 | Assert.AreEqual(sampleTagText.RichTextSubString(4), "abcd");
68 | Assert.AreEqual(sampleTagText.RichTextLength(), 4);
69 | }
70 |
71 | [Test]
72 | public void SmallerThenSignWithoutTag()
73 | {
74 | var sampleTagText = "<--lr-->";
75 | Assert.AreEqual(sampleTagText.RichTextSubString(8), sampleTagText);
76 | Assert.AreEqual(sampleTagText.RichTextSubString(1), "<");
77 | Assert.AreEqual(sampleTagText.RichTextSubString(2), "<-");
78 | Assert.AreEqual(sampleTagText.RichTextSubString(3), "<--");
79 | Assert.AreEqual(sampleTagText.RichTextSubString(4), "<--l");
80 | Assert.AreEqual(sampleTagText.RichTextSubString(5), "<--lr");
81 | Assert.AreEqual(sampleTagText.RichTextSubString(6), "<--lr-");
82 | Assert.AreEqual(sampleTagText.RichTextSubString(7), "<--lr--");
83 |
84 | var sampleTagText2 = "<><><<";
85 | Assert.AreEqual(sampleTagText2.RichTextSubString(12), sampleTagText2);
86 | Assert.AreEqual(sampleTagText2.RichTextSubString(1), "<");
87 | Assert.AreEqual(sampleTagText2.RichTextSubString(2), "<");
93 | Assert.AreEqual(sampleTagText2.RichTextSubString(8), "<>");
94 | Assert.AreEqual(sampleTagText2.RichTextSubString(9), "<><");
95 | Assert.AreEqual(sampleTagText2.RichTextSubString(10), "<><>");
96 | Assert.AreEqual(sampleTagText2.RichTextSubString(11), "<><><");
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 4
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | blendWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | particleRaycastBudget: 4
33 | asyncUploadTimeSlice: 2
34 | asyncUploadBufferSize: 4
35 | resolutionScalingFixedDPIFactor: 1
36 | excludedTargetPlatforms: []
37 | - serializedVersion: 2
38 | name: Low
39 | pixelLightCount: 0
40 | shadows: 0
41 | shadowResolution: 0
42 | shadowProjection: 1
43 | shadowCascades: 1
44 | shadowDistance: 20
45 | shadowNearPlaneOffset: 3
46 | shadowCascade2Split: 0.33333334
47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
48 | shadowmaskMode: 0
49 | blendWeights: 2
50 | textureQuality: 0
51 | anisotropicTextures: 0
52 | antiAliasing: 0
53 | softParticles: 0
54 | softVegetation: 0
55 | realtimeReflectionProbes: 0
56 | billboardsFaceCameraPosition: 0
57 | vSyncCount: 0
58 | lodBias: 0.4
59 | maximumLODLevel: 0
60 | particleRaycastBudget: 16
61 | asyncUploadTimeSlice: 2
62 | asyncUploadBufferSize: 4
63 | resolutionScalingFixedDPIFactor: 1
64 | excludedTargetPlatforms: []
65 | - serializedVersion: 2
66 | name: Medium
67 | pixelLightCount: 1
68 | shadows: 1
69 | shadowResolution: 0
70 | shadowProjection: 1
71 | shadowCascades: 1
72 | shadowDistance: 20
73 | shadowNearPlaneOffset: 3
74 | shadowCascade2Split: 0.33333334
75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
76 | shadowmaskMode: 0
77 | blendWeights: 2
78 | textureQuality: 0
79 | anisotropicTextures: 1
80 | antiAliasing: 0
81 | softParticles: 0
82 | softVegetation: 0
83 | realtimeReflectionProbes: 0
84 | billboardsFaceCameraPosition: 0
85 | vSyncCount: 1
86 | lodBias: 0.7
87 | maximumLODLevel: 0
88 | particleRaycastBudget: 64
89 | asyncUploadTimeSlice: 2
90 | asyncUploadBufferSize: 4
91 | resolutionScalingFixedDPIFactor: 1
92 | excludedTargetPlatforms: []
93 | - serializedVersion: 2
94 | name: High
95 | pixelLightCount: 2
96 | shadows: 2
97 | shadowResolution: 1
98 | shadowProjection: 1
99 | shadowCascades: 2
100 | shadowDistance: 40
101 | shadowNearPlaneOffset: 3
102 | shadowCascade2Split: 0.33333334
103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
104 | shadowmaskMode: 1
105 | blendWeights: 2
106 | textureQuality: 0
107 | anisotropicTextures: 1
108 | antiAliasing: 2
109 | softParticles: 0
110 | softVegetation: 1
111 | realtimeReflectionProbes: 1
112 | billboardsFaceCameraPosition: 1
113 | vSyncCount: 1
114 | lodBias: 1
115 | maximumLODLevel: 0
116 | particleRaycastBudget: 256
117 | asyncUploadTimeSlice: 2
118 | asyncUploadBufferSize: 4
119 | resolutionScalingFixedDPIFactor: 1
120 | excludedTargetPlatforms: []
121 | - serializedVersion: 2
122 | name: Very High
123 | pixelLightCount: 3
124 | shadows: 2
125 | shadowResolution: 2
126 | shadowProjection: 1
127 | shadowCascades: 2
128 | shadowDistance: 40
129 | shadowNearPlaneOffset: 3
130 | shadowCascade2Split: 0.33333334
131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
132 | shadowmaskMode: 1
133 | blendWeights: 4
134 | textureQuality: 0
135 | anisotropicTextures: 1
136 | antiAliasing: 4
137 | softParticles: 1
138 | softVegetation: 1
139 | realtimeReflectionProbes: 1
140 | billboardsFaceCameraPosition: 1
141 | vSyncCount: 1
142 | lodBias: 1.5
143 | maximumLODLevel: 0
144 | particleRaycastBudget: 1024
145 | asyncUploadTimeSlice: 2
146 | asyncUploadBufferSize: 4
147 | resolutionScalingFixedDPIFactor: 1
148 | excludedTargetPlatforms: []
149 | - serializedVersion: 2
150 | name: Ultra
151 | pixelLightCount: 4
152 | shadows: 2
153 | shadowResolution: 2
154 | shadowProjection: 1
155 | shadowCascades: 4
156 | shadowDistance: 150
157 | shadowNearPlaneOffset: 3
158 | shadowCascade2Split: 0.33333334
159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
160 | shadowmaskMode: 1
161 | blendWeights: 4
162 | textureQuality: 0
163 | anisotropicTextures: 1
164 | antiAliasing: 4
165 | softParticles: 1
166 | softVegetation: 1
167 | realtimeReflectionProbes: 1
168 | billboardsFaceCameraPosition: 1
169 | vSyncCount: 1
170 | lodBias: 2
171 | maximumLODLevel: 0
172 | particleRaycastBudget: 4096
173 | asyncUploadTimeSlice: 2
174 | asyncUploadBufferSize: 4
175 | resolutionScalingFixedDPIFactor: 1
176 | excludedTargetPlatforms: []
177 | m_PerPlatformDefaultQuality:
178 | Android: 2
179 | Nintendo 3DS: 5
180 | Nintendo Switch: 5
181 | PS4: 5
182 | PSP2: 2
183 | Standalone: 5
184 | Tizen: 2
185 | WebGL: 3
186 | WiiU: 5
187 | Windows Store Apps: 5
188 | XboxOne: 5
189 | iPhone: 2
190 | tvOS: 2
191 |
--------------------------------------------------------------------------------
/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/Assets/Scenes/SampleScene.unity:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!29 &1
4 | OcclusionCullingSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_OcclusionBakeSettings:
8 | smallestOccluder: 5
9 | smallestHole: 0.25
10 | backfaceThreshold: 100
11 | m_SceneGUID: 00000000000000000000000000000000
12 | m_OcclusionCullingData: {fileID: 0}
13 | --- !u!104 &2
14 | RenderSettings:
15 | m_ObjectHideFlags: 0
16 | serializedVersion: 9
17 | m_Fog: 0
18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
19 | m_FogMode: 3
20 | m_FogDensity: 0.01
21 | m_LinearFogStart: 0
22 | m_LinearFogEnd: 300
23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
26 | m_AmbientIntensity: 1
27 | m_AmbientMode: 0
28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
30 | m_HaloStrength: 0.5
31 | m_FlareStrength: 1
32 | m_FlareFadeSpeed: 3
33 | m_HaloTexture: {fileID: 0}
34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
35 | m_DefaultReflectionMode: 0
36 | m_DefaultReflectionResolution: 128
37 | m_ReflectionBounces: 1
38 | m_ReflectionIntensity: 1
39 | m_CustomReflection: {fileID: 0}
40 | m_Sun: {fileID: 0}
41 | m_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1}
42 | m_UseRadianceAmbientProbe: 0
43 | --- !u!157 &3
44 | LightmapSettings:
45 | m_ObjectHideFlags: 0
46 | serializedVersion: 11
47 | m_GIWorkflowMode: 0
48 | m_GISettings:
49 | serializedVersion: 2
50 | m_BounceScale: 1
51 | m_IndirectOutputScale: 1
52 | m_AlbedoBoost: 1
53 | m_TemporalCoherenceThreshold: 1
54 | m_EnvironmentLightingMode: 0
55 | m_EnableBakedLightmaps: 1
56 | m_EnableRealtimeLightmaps: 0
57 | m_LightmapEditorSettings:
58 | serializedVersion: 10
59 | m_Resolution: 2
60 | m_BakeResolution: 10
61 | m_AtlasSize: 512
62 | m_AO: 0
63 | m_AOMaxDistance: 1
64 | m_CompAOExponent: 1
65 | m_CompAOExponentDirect: 0
66 | m_Padding: 2
67 | m_LightmapParameters: {fileID: 0}
68 | m_LightmapsBakeMode: 1
69 | m_TextureCompression: 1
70 | m_FinalGather: 0
71 | m_FinalGatherFiltering: 1
72 | m_FinalGatherRayCount: 256
73 | m_ReflectionCompression: 2
74 | m_MixedBakeMode: 2
75 | m_BakeBackend: 1
76 | m_PVRSampling: 1
77 | m_PVRDirectSampleCount: 32
78 | m_PVRSampleCount: 256
79 | m_PVRBounces: 2
80 | m_PVRFilterTypeDirect: 0
81 | m_PVRFilterTypeIndirect: 0
82 | m_PVRFilterTypeAO: 0
83 | m_PVRFilteringMode: 1
84 | m_PVRCulling: 1
85 | m_PVRFilteringGaussRadiusDirect: 1
86 | m_PVRFilteringGaussRadiusIndirect: 5
87 | m_PVRFilteringGaussRadiusAO: 2
88 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5
89 | m_PVRFilteringAtrousPositionSigmaIndirect: 2
90 | m_PVRFilteringAtrousPositionSigmaAO: 1
91 | m_ShowResolutionOverlay: 1
92 | m_LightingDataAsset: {fileID: 0}
93 | m_UseShadowmask: 1
94 | --- !u!196 &4
95 | NavMeshSettings:
96 | serializedVersion: 2
97 | m_ObjectHideFlags: 0
98 | m_BuildSettings:
99 | serializedVersion: 2
100 | agentTypeID: 0
101 | agentRadius: 0.5
102 | agentHeight: 2
103 | agentSlope: 45
104 | agentClimb: 0.4
105 | ledgeDropHeight: 0
106 | maxJumpAcrossDistance: 0
107 | minRegionArea: 2
108 | manualCellSize: 0
109 | cellSize: 0.16666667
110 | manualTileSize: 0
111 | tileSize: 256
112 | accuratePlacement: 0
113 | debug:
114 | m_Flags: 0
115 | m_NavMeshData: {fileID: 0}
116 | --- !u!1 &170076733
117 | GameObject:
118 | m_ObjectHideFlags: 0
119 | m_CorrespondingSourceObject: {fileID: 0}
120 | m_PrefabInternal: {fileID: 0}
121 | serializedVersion: 6
122 | m_Component:
123 | - component: {fileID: 170076735}
124 | - component: {fileID: 170076734}
125 | m_Layer: 0
126 | m_Name: Directional Light
127 | m_TagString: Untagged
128 | m_Icon: {fileID: 0}
129 | m_NavMeshLayer: 0
130 | m_StaticEditorFlags: 0
131 | m_IsActive: 1
132 | --- !u!108 &170076734
133 | Light:
134 | m_ObjectHideFlags: 0
135 | m_CorrespondingSourceObject: {fileID: 0}
136 | m_PrefabInternal: {fileID: 0}
137 | m_GameObject: {fileID: 170076733}
138 | m_Enabled: 1
139 | serializedVersion: 8
140 | m_Type: 1
141 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
142 | m_Intensity: 1
143 | m_Range: 10
144 | m_SpotAngle: 30
145 | m_CookieSize: 10
146 | m_Shadows:
147 | m_Type: 2
148 | m_Resolution: -1
149 | m_CustomResolution: -1
150 | m_Strength: 1
151 | m_Bias: 0.05
152 | m_NormalBias: 0.4
153 | m_NearPlane: 0.2
154 | m_Cookie: {fileID: 0}
155 | m_DrawHalo: 0
156 | m_Flare: {fileID: 0}
157 | m_RenderMode: 0
158 | m_CullingMask:
159 | serializedVersion: 2
160 | m_Bits: 4294967295
161 | m_Lightmapping: 1
162 | m_LightShadowCasterMode: 0
163 | m_AreaSize: {x: 1, y: 1}
164 | m_BounceIntensity: 1
165 | m_ColorTemperature: 6570
166 | m_UseColorTemperature: 0
167 | m_ShadowRadius: 0
168 | m_ShadowAngle: 0
169 | --- !u!4 &170076735
170 | Transform:
171 | m_ObjectHideFlags: 0
172 | m_CorrespondingSourceObject: {fileID: 0}
173 | m_PrefabInternal: {fileID: 0}
174 | m_GameObject: {fileID: 170076733}
175 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
176 | m_LocalPosition: {x: 0, y: 3, z: 0}
177 | m_LocalScale: {x: 1, y: 1, z: 1}
178 | m_Children: []
179 | m_Father: {fileID: 0}
180 | m_RootOrder: 1
181 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
182 | --- !u!1 &534669902
183 | GameObject:
184 | m_ObjectHideFlags: 0
185 | m_CorrespondingSourceObject: {fileID: 0}
186 | m_PrefabInternal: {fileID: 0}
187 | serializedVersion: 6
188 | m_Component:
189 | - component: {fileID: 534669905}
190 | - component: {fileID: 534669904}
191 | - component: {fileID: 534669903}
192 | m_Layer: 0
193 | m_Name: Main Camera
194 | m_TagString: Untagged
195 | m_Icon: {fileID: 0}
196 | m_NavMeshLayer: 0
197 | m_StaticEditorFlags: 0
198 | m_IsActive: 1
199 | --- !u!81 &534669903
200 | AudioListener:
201 | m_ObjectHideFlags: 0
202 | m_CorrespondingSourceObject: {fileID: 0}
203 | m_PrefabInternal: {fileID: 0}
204 | m_GameObject: {fileID: 534669902}
205 | m_Enabled: 1
206 | --- !u!20 &534669904
207 | Camera:
208 | m_ObjectHideFlags: 0
209 | m_CorrespondingSourceObject: {fileID: 0}
210 | m_PrefabInternal: {fileID: 0}
211 | m_GameObject: {fileID: 534669902}
212 | m_Enabled: 1
213 | serializedVersion: 2
214 | m_ClearFlags: 1
215 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
216 | m_projectionMatrixMode: 1
217 | m_SensorSize: {x: 36, y: 24}
218 | m_LensShift: {x: 0, y: 0}
219 | m_FocalLength: 50
220 | m_NormalizedViewPortRect:
221 | serializedVersion: 2
222 | x: 0
223 | y: 0
224 | width: 1
225 | height: 1
226 | near clip plane: 0.3
227 | far clip plane: 1000
228 | field of view: 60
229 | orthographic: 0
230 | orthographic size: 5
231 | m_Depth: -1
232 | m_CullingMask:
233 | serializedVersion: 2
234 | m_Bits: 4294967295
235 | m_RenderingPath: -1
236 | m_TargetTexture: {fileID: 0}
237 | m_TargetDisplay: 0
238 | m_TargetEye: 3
239 | m_HDR: 1
240 | m_AllowMSAA: 1
241 | m_AllowDynamicResolution: 0
242 | m_ForceIntoRT: 0
243 | m_OcclusionCulling: 1
244 | m_StereoConvergence: 10
245 | m_StereoSeparation: 0.022
246 | --- !u!4 &534669905
247 | Transform:
248 | m_ObjectHideFlags: 0
249 | m_CorrespondingSourceObject: {fileID: 0}
250 | m_PrefabInternal: {fileID: 0}
251 | m_GameObject: {fileID: 534669902}
252 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
253 | m_LocalPosition: {x: 0, y: 1, z: -10}
254 | m_LocalScale: {x: 1, y: 1, z: 1}
255 | m_Children: []
256 | m_Father: {fileID: 0}
257 | m_RootOrder: 0
258 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
259 |
--------------------------------------------------------------------------------
/Assets/RichTextHelper/RichTextHelper.cs:
--------------------------------------------------------------------------------
1 | // Copyright 2018 Park Juhyung
2 | // Permission is hereby granted, free of charge, to any person obtaining a
3 | // copy of this software and associated documentation files (the "Software"),
4 | // to deal in the Software without restriction, including without limitation
5 | // the rights to use, copy, modify, merge, publish, distribute, sublicense,
6 | // and/or sell copies of the Software, and to permit persons to whom the
7 | // Software is furnished to do so, subject to the following conditions:
8 | //
9 | // The above copyright notice and this permission notice shall be included in
10 | // all copies or substantial portions of the Software.
11 | //
12 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
13 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
18 | // DEALINGS IN THE SOFTWARE.
19 |
20 | using System;
21 | using System.Collections.Generic;
22 | using UnityEngine;
23 |
24 | namespace RichTextSubstringHelper
25 | {
26 | public static class StringExt
27 | {
28 | public static string RichTextSubString(this string text, int length)
29 | {
30 | var m = new RichTextSubStringMaker(text);
31 | for (int i = 0; i < length; i++)
32 | {
33 | m.Consume();
34 | }
35 | return m.GetRichText();
36 | }
37 |
38 | public static int RichTextLength(this string text)
39 | {
40 | var m = new RichTextSubStringMaker(text);
41 | var length = 0;
42 | while (m.IsConsumable())
43 | {
44 | if (m.Consume())
45 | {
46 | length += 1;
47 | }
48 | }
49 | return length;
50 | }
51 | }
52 |
53 | class RichTextTag
54 | {
55 | public string tagName;
56 | public string endTag
57 | {
58 | get
59 | {
60 | return "" + tagName + ">";
61 | }
62 | }
63 | }
64 |
65 | public class RichTextSubStringMaker
66 | {
67 | private string originalText;
68 | private string middleText;
69 | private Stack tagStack;
70 | private int consumedLength;
71 |
72 | private static readonly char[] tagBrackets = new char[2] { '<', '>' };
73 |
74 | public RichTextSubStringMaker(string original)
75 | {
76 | this.originalText = original;
77 | middleText = "";
78 | tagStack = new Stack();
79 | consumedLength = 0;
80 | }
81 |
82 | public string GetRichText()
83 | {
84 | if (tagStack.Count == 0)
85 | {
86 | return middleText;
87 | }
88 |
89 | var ret = middleText;
90 | // Caution! we iterate tags from the last item of the stack.
91 | // copiedQueue's first item is tagStack's last item.
92 | var copiedQueue = new Queue(tagStack);
93 | while (copiedQueue.Count != 0)
94 | {
95 | ret += copiedQueue.Dequeue().endTag;
96 | }
97 | return ret;
98 | }
99 |
100 | public bool IsConsumable()
101 | {
102 | return consumedLength < originalText.Length;
103 | }
104 |
105 | // Return if real character is consumed
106 | // If line's last part is closing tag, this function return false when consumed last closing tag.
107 | public bool Consume()
108 | {
109 | Debug.Assert(IsConsumable());
110 | var peekedOriginChar = PeekNextOriginChar();
111 | // Only consume the start tag if a tag closing bracket (>) was found.
112 | var isStartTag = peekedOriginChar == '<' && IsNextTagBracketClosing(consumedLength + 1);
113 | var isEndTag = peekedOriginChar == '<' && PeekNextNextOriginChar() == '/';
114 | if (isStartTag || isEndTag)
115 | {
116 | if (isEndTag)
117 | {
118 | ConsumeEndTag();
119 | }
120 | else if (isStartTag)
121 | {
122 | ConsumeStartTag();
123 | }
124 |
125 | if (IsConsumable())
126 | {
127 | return Consume();
128 | }
129 | else
130 | {
131 | return false;
132 | }
133 | }
134 | else
135 | {
136 | ConsumeRawChar();
137 | return true;
138 | }
139 | }
140 |
141 | private char? PeekNextNextOriginChar()
142 | {
143 | if (originalText.Length <= consumedLength + 1)
144 | {
145 | return null;
146 | }
147 | return originalText[consumedLength + 1];
148 | }
149 |
150 | private char PeekNextOriginChar()
151 | {
152 | return originalText[consumedLength];
153 | }
154 |
155 | // Returns if the first tag bracket found in the string is '>', as opposed to '<'
156 | private bool IsNextTagBracketClosing(int charIndexToStartSearch = 0)
157 | {
158 | int bracketIndex = originalText.IndexOfAny(tagBrackets, charIndexToStartSearch);
159 |
160 | return bracketIndex != -1 && originalText[bracketIndex] == '>';
161 | }
162 |
163 | private void ConsumeStartTag()
164 | {
165 | Debug.Assert(PeekNextOriginChar() == '<');
166 | var tagName = "";
167 | bool tagNameComplete = false;
168 |
169 | ConsumeRawChar();
170 |
171 | while (true)
172 | {
173 | var consumedChar = ConsumeRawChar();
174 | if (consumedChar == null)
175 | {
176 | Debug.LogError("Cannot close start tag");
177 | return;
178 | }
179 |
180 | if (consumedChar == '>')
181 | {
182 | if (tagName == "")
183 | {
184 | Debug.LogWarning("Empty tag name");
185 | }
186 |
187 | tagStack.Push(new RichTextTag
188 | {
189 | tagName = tagName
190 | });
191 | return;
192 | }
193 |
194 | if (!tagNameComplete)
195 | {
196 | if (!char.IsLetterOrDigit(consumedChar.Value))
197 | {
198 | tagNameComplete = true;
199 | }
200 | else
201 | {
202 | tagName += consumedChar;
203 | }
204 | }
205 | }
206 | }
207 |
208 | private void ConsumeEndTag()
209 | {
210 | Debug.Assert(PeekNextOriginChar() == '<');
211 | Debug.Assert(PeekNextNextOriginChar() == '/');
212 | var tagName = "";
213 | bool tagNameComplete = false;
214 |
215 | ConsumeRawChar();
216 | ConsumeRawChar();
217 |
218 | while (true)
219 | {
220 | var consumedChar = ConsumeRawChar();
221 | if (consumedChar == null)
222 | {
223 | Debug.LogError("Cannot close start tag");
224 | return;
225 | }
226 |
227 | if (consumedChar == '>')
228 | {
229 | if (tagName == "")
230 | {
231 | Debug.LogWarning("Empty tag name");
232 | }
233 |
234 | if (tagStack.Count == 0)
235 | {
236 | Debug.LogError("Could not pop tag " + tagName);
237 | }
238 |
239 | if (tagStack.Peek().tagName != tagName)
240 | {
241 | Debug.LogError("Could not pop tag " + tagName + " expeted " + tagStack.Peek().tagName);
242 | }
243 |
244 | tagStack.Pop();
245 | return;
246 | }
247 |
248 | if (!tagNameComplete)
249 | {
250 | if (!char.IsLetterOrDigit(consumedChar.Value))
251 | {
252 | tagNameComplete = true;
253 | }
254 | else
255 | {
256 | tagName += consumedChar;
257 | }
258 | }
259 | }
260 | }
261 |
262 | private char? ConsumeRawChar()
263 | {
264 | if (consumedLength > originalText.Length)
265 | {
266 | return null;
267 | }
268 | var peeked = PeekNextOriginChar();
269 | this.middleText += peeked;
270 | this.consumedLength += 1;
271 | return peeked;
272 | }
273 | }
274 | }
275 |
--------------------------------------------------------------------------------
/ProjectSettings/ProjectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!129 &1
4 | PlayerSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 15
7 | productGUID: df58a1a0fbc69d74f99e286cd5c90244
8 | AndroidProfiler: 0
9 | AndroidFilterTouchesWhenObscured: 0
10 | AndroidEnableSustainedPerformanceMode: 0
11 | defaultScreenOrientation: 4
12 | targetDevice: 2
13 | useOnDemandResources: 0
14 | accelerometerFrequency: 60
15 | companyName: DefaultCompany
16 | productName: RichTextSubstringMaker
17 | defaultCursor: {fileID: 0}
18 | cursorHotspot: {x: 0, y: 0}
19 | m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
20 | m_ShowUnitySplashScreen: 1
21 | m_ShowUnitySplashLogo: 1
22 | m_SplashScreenOverlayOpacity: 1
23 | m_SplashScreenAnimation: 1
24 | m_SplashScreenLogoStyle: 1
25 | m_SplashScreenDrawMode: 0
26 | m_SplashScreenBackgroundAnimationZoom: 1
27 | m_SplashScreenLogoAnimationZoom: 1
28 | m_SplashScreenBackgroundLandscapeAspect: 1
29 | m_SplashScreenBackgroundPortraitAspect: 1
30 | m_SplashScreenBackgroundLandscapeUvs:
31 | serializedVersion: 2
32 | x: 0
33 | y: 0
34 | width: 1
35 | height: 1
36 | m_SplashScreenBackgroundPortraitUvs:
37 | serializedVersion: 2
38 | x: 0
39 | y: 0
40 | width: 1
41 | height: 1
42 | m_SplashScreenLogos: []
43 | m_VirtualRealitySplashScreen: {fileID: 0}
44 | m_HolographicTrackingLossScreen: {fileID: 0}
45 | defaultScreenWidth: 1024
46 | defaultScreenHeight: 768
47 | defaultScreenWidthWeb: 960
48 | defaultScreenHeightWeb: 600
49 | m_StereoRenderingPath: 0
50 | m_ActiveColorSpace: 0
51 | m_MTRendering: 1
52 | m_StackTraceTypes: 010000000100000001000000010000000100000001000000
53 | iosShowActivityIndicatorOnLoading: -1
54 | androidShowActivityIndicatorOnLoading: -1
55 | iosAppInBackgroundBehavior: 0
56 | displayResolutionDialog: 1
57 | iosAllowHTTPDownload: 1
58 | allowedAutorotateToPortrait: 1
59 | allowedAutorotateToPortraitUpsideDown: 1
60 | allowedAutorotateToLandscapeRight: 1
61 | allowedAutorotateToLandscapeLeft: 1
62 | useOSAutorotation: 1
63 | use32BitDisplayBuffer: 1
64 | preserveFramebufferAlpha: 0
65 | disableDepthAndStencilBuffers: 0
66 | androidBlitType: 0
67 | defaultIsNativeResolution: 1
68 | macRetinaSupport: 1
69 | runInBackground: 1
70 | captureSingleScreen: 0
71 | muteOtherAudioSources: 0
72 | Prepare IOS For Recording: 0
73 | Force IOS Speakers When Recording: 0
74 | deferSystemGesturesMode: 0
75 | hideHomeButton: 0
76 | submitAnalytics: 1
77 | usePlayerLog: 1
78 | bakeCollisionMeshes: 0
79 | forceSingleInstance: 0
80 | resizableWindow: 0
81 | useMacAppStoreValidation: 0
82 | macAppStoreCategory: public.app-category.games
83 | gpuSkinning: 1
84 | graphicsJobs: 0
85 | xboxPIXTextureCapture: 0
86 | xboxEnableAvatar: 0
87 | xboxEnableKinect: 0
88 | xboxEnableKinectAutoTracking: 0
89 | xboxEnableFitness: 0
90 | visibleInBackground: 1
91 | allowFullscreenSwitch: 1
92 | graphicsJobMode: 0
93 | fullscreenMode: 1
94 | xboxSpeechDB: 0
95 | xboxEnableHeadOrientation: 0
96 | xboxEnableGuest: 0
97 | xboxEnablePIXSampling: 0
98 | metalFramebufferOnly: 0
99 | n3dsDisableStereoscopicView: 0
100 | n3dsEnableSharedListOpt: 1
101 | n3dsEnableVSync: 0
102 | xboxOneResolution: 0
103 | xboxOneSResolution: 0
104 | xboxOneXResolution: 3
105 | xboxOneMonoLoggingLevel: 0
106 | xboxOneLoggingLevel: 1
107 | xboxOneDisableEsram: 0
108 | xboxOnePresentImmediateThreshold: 0
109 | switchQueueCommandMemory: 0
110 | videoMemoryForVertexBuffers: 0
111 | psp2PowerMode: 0
112 | psp2AcquireBGM: 1
113 | vulkanEnableSetSRGBWrite: 0
114 | vulkanUseSWCommandBuffers: 0
115 | m_SupportedAspectRatios:
116 | 4:3: 1
117 | 5:4: 1
118 | 16:10: 1
119 | 16:9: 1
120 | Others: 1
121 | bundleVersion: 0.1
122 | preloadedAssets: []
123 | metroInputSource: 0
124 | wsaTransparentSwapchain: 0
125 | m_HolographicPauseOnTrackingLoss: 1
126 | xboxOneDisableKinectGpuReservation: 0
127 | xboxOneEnable7thCore: 0
128 | isWsaHolographicRemotingEnabled: 0
129 | vrSettings:
130 | cardboard:
131 | depthFormat: 0
132 | enableTransitionView: 0
133 | daydream:
134 | depthFormat: 0
135 | useSustainedPerformanceMode: 0
136 | enableVideoLayer: 0
137 | useProtectedVideoMemory: 0
138 | minimumSupportedHeadTracking: 0
139 | maximumSupportedHeadTracking: 1
140 | hololens:
141 | depthFormat: 1
142 | depthBufferSharingEnabled: 0
143 | oculus:
144 | sharedDepthBuffer: 0
145 | dashSupport: 0
146 | enable360StereoCapture: 0
147 | protectGraphicsMemory: 0
148 | useHDRDisplay: 0
149 | m_ColorGamuts: 00000000
150 | targetPixelDensity: 30
151 | resolutionScalingMode: 0
152 | androidSupportedAspectRatio: 1
153 | androidMaxAspectRatio: 2.1
154 | applicationIdentifier: {}
155 | buildNumber: {}
156 | AndroidBundleVersionCode: 1
157 | AndroidMinSdkVersion: 16
158 | AndroidTargetSdkVersion: 0
159 | AndroidPreferredInstallLocation: 1
160 | aotOptions:
161 | stripEngineCode: 1
162 | iPhoneStrippingLevel: 0
163 | iPhoneScriptCallOptimization: 0
164 | ForceInternetPermission: 0
165 | ForceSDCardPermission: 0
166 | CreateWallpaper: 0
167 | APKExpansionFiles: 0
168 | keepLoadedShadersAlive: 0
169 | StripUnusedMeshComponents: 1
170 | VertexChannelCompressionMask: 4054
171 | iPhoneSdkVersion: 988
172 | iOSTargetOSVersionString: 8.0
173 | tvOSSdkVersion: 0
174 | tvOSRequireExtendedGameController: 0
175 | tvOSTargetOSVersionString: 9.0
176 | uIPrerenderedIcon: 0
177 | uIRequiresPersistentWiFi: 0
178 | uIRequiresFullScreen: 1
179 | uIStatusBarHidden: 1
180 | uIExitOnSuspend: 0
181 | uIStatusBarStyle: 0
182 | iPhoneSplashScreen: {fileID: 0}
183 | iPhoneHighResSplashScreen: {fileID: 0}
184 | iPhoneTallHighResSplashScreen: {fileID: 0}
185 | iPhone47inSplashScreen: {fileID: 0}
186 | iPhone55inPortraitSplashScreen: {fileID: 0}
187 | iPhone55inLandscapeSplashScreen: {fileID: 0}
188 | iPhone58inPortraitSplashScreen: {fileID: 0}
189 | iPhone58inLandscapeSplashScreen: {fileID: 0}
190 | iPadPortraitSplashScreen: {fileID: 0}
191 | iPadHighResPortraitSplashScreen: {fileID: 0}
192 | iPadLandscapeSplashScreen: {fileID: 0}
193 | iPadHighResLandscapeSplashScreen: {fileID: 0}
194 | appleTVSplashScreen: {fileID: 0}
195 | appleTVSplashScreen2x: {fileID: 0}
196 | tvOSSmallIconLayers: []
197 | tvOSSmallIconLayers2x: []
198 | tvOSLargeIconLayers: []
199 | tvOSLargeIconLayers2x: []
200 | tvOSTopShelfImageLayers: []
201 | tvOSTopShelfImageLayers2x: []
202 | tvOSTopShelfImageWideLayers: []
203 | tvOSTopShelfImageWideLayers2x: []
204 | iOSLaunchScreenType: 0
205 | iOSLaunchScreenPortrait: {fileID: 0}
206 | iOSLaunchScreenLandscape: {fileID: 0}
207 | iOSLaunchScreenBackgroundColor:
208 | serializedVersion: 2
209 | rgba: 0
210 | iOSLaunchScreenFillPct: 100
211 | iOSLaunchScreenSize: 100
212 | iOSLaunchScreenCustomXibPath:
213 | iOSLaunchScreeniPadType: 0
214 | iOSLaunchScreeniPadImage: {fileID: 0}
215 | iOSLaunchScreeniPadBackgroundColor:
216 | serializedVersion: 2
217 | rgba: 0
218 | iOSLaunchScreeniPadFillPct: 100
219 | iOSLaunchScreeniPadSize: 100
220 | iOSLaunchScreeniPadCustomXibPath:
221 | iOSUseLaunchScreenStoryboard: 0
222 | iOSLaunchScreenCustomStoryboardPath:
223 | iOSDeviceRequirements: []
224 | iOSURLSchemes: []
225 | iOSBackgroundModes: 0
226 | iOSMetalForceHardShadows: 0
227 | metalEditorSupport: 1
228 | metalAPIValidation: 1
229 | iOSRenderExtraFrameOnPause: 0
230 | appleDeveloperTeamID:
231 | iOSManualSigningProvisioningProfileID:
232 | tvOSManualSigningProvisioningProfileID:
233 | iOSManualSigningProvisioningProfileType: 0
234 | tvOSManualSigningProvisioningProfileType: 0
235 | appleEnableAutomaticSigning: 0
236 | iOSRequireARKit: 0
237 | appleEnableProMotion: 0
238 | vulkanEditorSupport: 0
239 | clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea
240 | templatePackageId: com.unity.3d@1.0.2
241 | templateDefaultScene: Assets/Scenes/SampleScene.unity
242 | AndroidTargetArchitectures: 5
243 | AndroidSplashScreenScale: 0
244 | androidSplashScreen: {fileID: 0}
245 | AndroidKeystoreName:
246 | AndroidKeyaliasName:
247 | AndroidBuildApkPerCpuArchitecture: 0
248 | AndroidTVCompatibility: 1
249 | AndroidIsGame: 1
250 | AndroidEnableTango: 0
251 | androidEnableBanner: 1
252 | androidUseLowAccuracyLocation: 0
253 | m_AndroidBanners:
254 | - width: 320
255 | height: 180
256 | banner: {fileID: 0}
257 | androidGamepadSupportLevel: 0
258 | resolutionDialogBanner: {fileID: 0}
259 | m_BuildTargetIcons: []
260 | m_BuildTargetPlatformIcons: []
261 | m_BuildTargetBatching:
262 | - m_BuildTarget: Standalone
263 | m_StaticBatching: 1
264 | m_DynamicBatching: 0
265 | - m_BuildTarget: tvOS
266 | m_StaticBatching: 1
267 | m_DynamicBatching: 0
268 | - m_BuildTarget: Android
269 | m_StaticBatching: 1
270 | m_DynamicBatching: 0
271 | - m_BuildTarget: iPhone
272 | m_StaticBatching: 1
273 | m_DynamicBatching: 0
274 | - m_BuildTarget: WebGL
275 | m_StaticBatching: 0
276 | m_DynamicBatching: 0
277 | m_BuildTargetGraphicsAPIs:
278 | - m_BuildTarget: AndroidPlayer
279 | m_APIs: 0b00000015000000
280 | m_Automatic: 1
281 | - m_BuildTarget: iOSSupport
282 | m_APIs: 10000000
283 | m_Automatic: 1
284 | - m_BuildTarget: AppleTVSupport
285 | m_APIs: 10000000
286 | m_Automatic: 0
287 | - m_BuildTarget: WebGLSupport
288 | m_APIs: 0b000000
289 | m_Automatic: 1
290 | m_BuildTargetVRSettings:
291 | - m_BuildTarget: Standalone
292 | m_Enabled: 0
293 | m_Devices:
294 | - Oculus
295 | - OpenVR
296 | m_BuildTargetEnableVuforiaSettings: []
297 | openGLRequireES31: 0
298 | openGLRequireES31AEP: 0
299 | m_TemplateCustomTags: {}
300 | mobileMTRendering:
301 | Android: 1
302 | iPhone: 1
303 | tvOS: 1
304 | m_BuildTargetGroupLightmapEncodingQuality: []
305 | m_BuildTargetGroupLightmapSettings: []
306 | playModeTestRunnerEnabled: 0
307 | runPlayModeTestAsEditModeTest: 0
308 | actionOnDotNetUnhandledException: 1
309 | enableInternalProfiler: 0
310 | logObjCUncaughtExceptions: 1
311 | enableCrashReportAPI: 0
312 | cameraUsageDescription:
313 | locationUsageDescription:
314 | microphoneUsageDescription:
315 | switchNetLibKey:
316 | switchSocketMemoryPoolSize: 6144
317 | switchSocketAllocatorPoolSize: 128
318 | switchSocketConcurrencyLimit: 14
319 | switchScreenResolutionBehavior: 2
320 | switchUseCPUProfiler: 0
321 | switchApplicationID: 0x01004b9000490000
322 | switchNSODependencies:
323 | switchTitleNames_0:
324 | switchTitleNames_1:
325 | switchTitleNames_2:
326 | switchTitleNames_3:
327 | switchTitleNames_4:
328 | switchTitleNames_5:
329 | switchTitleNames_6:
330 | switchTitleNames_7:
331 | switchTitleNames_8:
332 | switchTitleNames_9:
333 | switchTitleNames_10:
334 | switchTitleNames_11:
335 | switchTitleNames_12:
336 | switchTitleNames_13:
337 | switchTitleNames_14:
338 | switchPublisherNames_0:
339 | switchPublisherNames_1:
340 | switchPublisherNames_2:
341 | switchPublisherNames_3:
342 | switchPublisherNames_4:
343 | switchPublisherNames_5:
344 | switchPublisherNames_6:
345 | switchPublisherNames_7:
346 | switchPublisherNames_8:
347 | switchPublisherNames_9:
348 | switchPublisherNames_10:
349 | switchPublisherNames_11:
350 | switchPublisherNames_12:
351 | switchPublisherNames_13:
352 | switchPublisherNames_14:
353 | switchIcons_0: {fileID: 0}
354 | switchIcons_1: {fileID: 0}
355 | switchIcons_2: {fileID: 0}
356 | switchIcons_3: {fileID: 0}
357 | switchIcons_4: {fileID: 0}
358 | switchIcons_5: {fileID: 0}
359 | switchIcons_6: {fileID: 0}
360 | switchIcons_7: {fileID: 0}
361 | switchIcons_8: {fileID: 0}
362 | switchIcons_9: {fileID: 0}
363 | switchIcons_10: {fileID: 0}
364 | switchIcons_11: {fileID: 0}
365 | switchIcons_12: {fileID: 0}
366 | switchIcons_13: {fileID: 0}
367 | switchIcons_14: {fileID: 0}
368 | switchSmallIcons_0: {fileID: 0}
369 | switchSmallIcons_1: {fileID: 0}
370 | switchSmallIcons_2: {fileID: 0}
371 | switchSmallIcons_3: {fileID: 0}
372 | switchSmallIcons_4: {fileID: 0}
373 | switchSmallIcons_5: {fileID: 0}
374 | switchSmallIcons_6: {fileID: 0}
375 | switchSmallIcons_7: {fileID: 0}
376 | switchSmallIcons_8: {fileID: 0}
377 | switchSmallIcons_9: {fileID: 0}
378 | switchSmallIcons_10: {fileID: 0}
379 | switchSmallIcons_11: {fileID: 0}
380 | switchSmallIcons_12: {fileID: 0}
381 | switchSmallIcons_13: {fileID: 0}
382 | switchSmallIcons_14: {fileID: 0}
383 | switchManualHTML:
384 | switchAccessibleURLs:
385 | switchLegalInformation:
386 | switchMainThreadStackSize: 1048576
387 | switchPresenceGroupId:
388 | switchLogoHandling: 0
389 | switchReleaseVersion: 0
390 | switchDisplayVersion: 1.0.0
391 | switchStartupUserAccount: 0
392 | switchTouchScreenUsage: 0
393 | switchSupportedLanguagesMask: 0
394 | switchLogoType: 0
395 | switchApplicationErrorCodeCategory:
396 | switchUserAccountSaveDataSize: 0
397 | switchUserAccountSaveDataJournalSize: 0
398 | switchApplicationAttribute: 0
399 | switchCardSpecSize: -1
400 | switchCardSpecClock: -1
401 | switchRatingsMask: 0
402 | switchRatingsInt_0: 0
403 | switchRatingsInt_1: 0
404 | switchRatingsInt_2: 0
405 | switchRatingsInt_3: 0
406 | switchRatingsInt_4: 0
407 | switchRatingsInt_5: 0
408 | switchRatingsInt_6: 0
409 | switchRatingsInt_7: 0
410 | switchRatingsInt_8: 0
411 | switchRatingsInt_9: 0
412 | switchRatingsInt_10: 0
413 | switchRatingsInt_11: 0
414 | switchLocalCommunicationIds_0:
415 | switchLocalCommunicationIds_1:
416 | switchLocalCommunicationIds_2:
417 | switchLocalCommunicationIds_3:
418 | switchLocalCommunicationIds_4:
419 | switchLocalCommunicationIds_5:
420 | switchLocalCommunicationIds_6:
421 | switchLocalCommunicationIds_7:
422 | switchParentalControl: 0
423 | switchAllowsScreenshot: 1
424 | switchAllowsVideoCapturing: 1
425 | switchAllowsRuntimeAddOnContentInstall: 0
426 | switchDataLossConfirmation: 0
427 | switchUserAccountLockEnabled: 0
428 | switchSupportedNpadStyles: 3
429 | switchNativeFsCacheSize: 32
430 | switchIsHoldTypeHorizontal: 0
431 | switchSupportedNpadCount: 8
432 | switchSocketConfigEnabled: 0
433 | switchTcpInitialSendBufferSize: 32
434 | switchTcpInitialReceiveBufferSize: 64
435 | switchTcpAutoSendBufferSizeMax: 256
436 | switchTcpAutoReceiveBufferSizeMax: 256
437 | switchUdpSendBufferSize: 9
438 | switchUdpReceiveBufferSize: 42
439 | switchSocketBufferEfficiency: 4
440 | switchSocketInitializeEnabled: 1
441 | switchNetworkInterfaceManagerInitializeEnabled: 1
442 | switchPlayerConnectionEnabled: 1
443 | ps4NPAgeRating: 12
444 | ps4NPTitleSecret:
445 | ps4NPTrophyPackPath:
446 | ps4ParentalLevel: 11
447 | ps4ContentID: ED1633-NPXX51362_00-0000000000000000
448 | ps4Category: 0
449 | ps4MasterVersion: 01.00
450 | ps4AppVersion: 01.00
451 | ps4AppType: 0
452 | ps4ParamSfxPath:
453 | ps4VideoOutPixelFormat: 0
454 | ps4VideoOutInitialWidth: 1920
455 | ps4VideoOutBaseModeInitialWidth: 1920
456 | ps4VideoOutReprojectionRate: 60
457 | ps4PronunciationXMLPath:
458 | ps4PronunciationSIGPath:
459 | ps4BackgroundImagePath:
460 | ps4StartupImagePath:
461 | ps4StartupImagesFolder:
462 | ps4IconImagesFolder:
463 | ps4SaveDataImagePath:
464 | ps4SdkOverride:
465 | ps4BGMPath:
466 | ps4ShareFilePath:
467 | ps4ShareOverlayImagePath:
468 | ps4PrivacyGuardImagePath:
469 | ps4NPtitleDatPath:
470 | ps4RemotePlayKeyAssignment: -1
471 | ps4RemotePlayKeyMappingDir:
472 | ps4PlayTogetherPlayerCount: 0
473 | ps4EnterButtonAssignment: 1
474 | ps4ApplicationParam1: 0
475 | ps4ApplicationParam2: 0
476 | ps4ApplicationParam3: 0
477 | ps4ApplicationParam4: 0
478 | ps4DownloadDataSize: 0
479 | ps4GarlicHeapSize: 2048
480 | ps4ProGarlicHeapSize: 2560
481 | ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ
482 | ps4pnSessions: 1
483 | ps4pnPresence: 1
484 | ps4pnFriends: 1
485 | ps4pnGameCustomData: 1
486 | playerPrefsSupport: 0
487 | enableApplicationExit: 0
488 | restrictedAudioUsageRights: 0
489 | ps4UseResolutionFallback: 0
490 | ps4ReprojectionSupport: 0
491 | ps4UseAudio3dBackend: 0
492 | ps4SocialScreenEnabled: 0
493 | ps4ScriptOptimizationLevel: 0
494 | ps4Audio3dVirtualSpeakerCount: 14
495 | ps4attribCpuUsage: 0
496 | ps4PatchPkgPath:
497 | ps4PatchLatestPkgPath:
498 | ps4PatchChangeinfoPath:
499 | ps4PatchDayOne: 0
500 | ps4attribUserManagement: 0
501 | ps4attribMoveSupport: 0
502 | ps4attrib3DSupport: 0
503 | ps4attribShareSupport: 0
504 | ps4attribExclusiveVR: 0
505 | ps4disableAutoHideSplash: 0
506 | ps4videoRecordingFeaturesUsed: 0
507 | ps4contentSearchFeaturesUsed: 0
508 | ps4attribEyeToEyeDistanceSettingVR: 0
509 | ps4IncludedModules: []
510 | monoEnv:
511 | psp2Splashimage: {fileID: 0}
512 | psp2NPTrophyPackPath:
513 | psp2NPSupportGBMorGJP: 0
514 | psp2NPAgeRating: 12
515 | psp2NPTitleDatPath:
516 | psp2NPCommsID:
517 | psp2NPCommunicationsID:
518 | psp2NPCommsPassphrase:
519 | psp2NPCommsSig:
520 | psp2ParamSfxPath:
521 | psp2ManualPath:
522 | psp2LiveAreaGatePath:
523 | psp2LiveAreaBackroundPath:
524 | psp2LiveAreaPath:
525 | psp2LiveAreaTrialPath:
526 | psp2PatchChangeInfoPath:
527 | psp2PatchOriginalPackage:
528 | psp2PackagePassword: F69AzBlax3CF3EDNhm3soLBPh71Yexui
529 | psp2KeystoneFile:
530 | psp2MemoryExpansionMode: 0
531 | psp2DRMType: 0
532 | psp2StorageType: 0
533 | psp2MediaCapacity: 0
534 | psp2DLCConfigPath:
535 | psp2ThumbnailPath:
536 | psp2BackgroundPath:
537 | psp2SoundPath:
538 | psp2TrophyCommId:
539 | psp2TrophyPackagePath:
540 | psp2PackagedResourcesPath:
541 | psp2SaveDataQuota: 10240
542 | psp2ParentalLevel: 1
543 | psp2ShortTitle: Not Set
544 | psp2ContentID: IV0000-ABCD12345_00-0123456789ABCDEF
545 | psp2Category: 0
546 | psp2MasterVersion: 01.00
547 | psp2AppVersion: 01.00
548 | psp2TVBootMode: 0
549 | psp2EnterButtonAssignment: 2
550 | psp2TVDisableEmu: 0
551 | psp2AllowTwitterDialog: 1
552 | psp2Upgradable: 0
553 | psp2HealthWarning: 0
554 | psp2UseLibLocation: 0
555 | psp2InfoBarOnStartup: 0
556 | psp2InfoBarColor: 0
557 | psp2ScriptOptimizationLevel: 0
558 | splashScreenBackgroundSourceLandscape: {fileID: 0}
559 | splashScreenBackgroundSourcePortrait: {fileID: 0}
560 | spritePackerPolicy:
561 | webGLMemorySize: 256
562 | webGLExceptionSupport: 1
563 | webGLNameFilesAsHashes: 0
564 | webGLDataCaching: 1
565 | webGLDebugSymbols: 0
566 | webGLEmscriptenArgs:
567 | webGLModulesDirectory:
568 | webGLTemplate: APPLICATION:Default
569 | webGLAnalyzeBuildSize: 0
570 | webGLUseEmbeddedResources: 0
571 | webGLCompressionFormat: 1
572 | webGLLinkerTarget: 1
573 | scriptingDefineSymbols: {}
574 | platformArchitecture: {}
575 | scriptingBackend: {}
576 | il2cppCompilerConfiguration: {}
577 | incrementalIl2cppBuild: {}
578 | allowUnsafeCode: 0
579 | additionalIl2CppArgs:
580 | scriptingRuntimeVersion: 0
581 | apiCompatibilityLevelPerPlatform: {}
582 | m_RenderingPath: 1
583 | m_MobileRenderingPath: 1
584 | metroPackageName: Template_3D
585 | metroPackageVersion:
586 | metroCertificatePath:
587 | metroCertificatePassword:
588 | metroCertificateSubject:
589 | metroCertificateIssuer:
590 | metroCertificateNotAfter: 0000000000000000
591 | metroApplicationDescription: Template_3D
592 | wsaImages: {}
593 | metroTileShortName:
594 | metroTileShowName: 0
595 | metroMediumTileShowName: 0
596 | metroLargeTileShowName: 0
597 | metroWideTileShowName: 0
598 | metroDefaultTileSize: 1
599 | metroTileForegroundText: 2
600 | metroTileBackgroundColor: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 0}
601 | metroSplashScreenBackgroundColor: {r: 0.12941177, g: 0.17254902, b: 0.21568628,
602 | a: 1}
603 | metroSplashScreenUseBackgroundColor: 0
604 | platformCapabilities: {}
605 | metroFTAName:
606 | metroFTAFileTypes: []
607 | metroProtocolName:
608 | metroCompilationOverrides: 1
609 | n3dsUseExtSaveData: 0
610 | n3dsCompressStaticMem: 1
611 | n3dsExtSaveDataNumber: 0x12345
612 | n3dsStackSize: 131072
613 | n3dsTargetPlatform: 2
614 | n3dsRegion: 7
615 | n3dsMediaSize: 0
616 | n3dsLogoStyle: 3
617 | n3dsTitle: GameName
618 | n3dsProductCode:
619 | n3dsApplicationId: 0xFF3FF
620 | XboxOneProductId:
621 | XboxOneUpdateKey:
622 | XboxOneSandboxId:
623 | XboxOneContentId:
624 | XboxOneTitleId:
625 | XboxOneSCId:
626 | XboxOneGameOsOverridePath:
627 | XboxOnePackagingOverridePath:
628 | XboxOneAppManifestOverridePath:
629 | XboxOneVersion: 1.0.0.0
630 | XboxOnePackageEncryption: 0
631 | XboxOnePackageUpdateGranularity: 2
632 | XboxOneDescription:
633 | XboxOneLanguage:
634 | - enus
635 | XboxOneCapability: []
636 | XboxOneGameRating: {}
637 | XboxOneIsContentPackage: 0
638 | XboxOneEnableGPUVariability: 0
639 | XboxOneSockets: {}
640 | XboxOneSplashScreen: {fileID: 0}
641 | XboxOneAllowedProductIds: []
642 | XboxOnePersistentLocalStorageSize: 0
643 | XboxOneXTitleMemory: 8
644 | xboxOneScriptCompiler: 0
645 | vrEditorSettings:
646 | daydream:
647 | daydreamIconForeground: {fileID: 0}
648 | daydreamIconBackground: {fileID: 0}
649 | cloudServicesEnabled:
650 | UNet: 1
651 | facebookSdkVersion: 7.9.4
652 | apiCompatibilityLevel: 2
653 | cloudProjectId:
654 | projectName:
655 | organizationId:
656 | cloudEnabled: 0
657 | enableNativePlatformBackendsForNewInputSystem: 0
658 | disableOldInputManagerSupport: 0
659 |
--------------------------------------------------------------------------------