├── .gitignore ├── Editor.meta ├── Editor ├── Editor.cs ├── Editor.cs.meta ├── Lumpn.Discord.Editor.asmdef ├── Lumpn.Discord.Editor.asmdef.meta ├── WebhookDataEditor.cs └── WebhookDataEditor.cs.meta ├── LICENSE.md ├── LICENSE.md.meta ├── README.md ├── README.md.meta ├── Runtime.meta ├── Runtime ├── AssemblyInfo.cs ├── AssemblyInfo.cs.meta ├── Attachment.cs ├── Attachment.cs.meta ├── Author.cs ├── Author.cs.meta ├── Embed.cs ├── Embed.cs.meta ├── EmbedExtensions.cs ├── EmbedExtensions.cs.meta ├── Field.cs ├── Field.cs.meta ├── FileData.cs ├── FileData.cs.meta ├── FileDataUtils.cs ├── FileDataUtils.cs.meta ├── Footer.cs ├── Footer.cs.meta ├── Image.cs ├── Image.cs.meta ├── Lumpn.Discord.asmdef ├── Lumpn.Discord.asmdef.meta ├── MediaType.cs ├── MediaType.cs.meta ├── MediaTypeUtils.cs ├── MediaTypeUtils.cs.meta ├── Message.cs ├── Message.cs.meta ├── Thumbnail.cs ├── Thumbnail.cs.meta ├── Utils.meta ├── Utils │ ├── ColorUtils.cs │ └── ColorUtils.cs.meta ├── Video.cs ├── Video.cs.meta ├── Webhook.cs ├── Webhook.cs.meta ├── WebhookData.cs ├── WebhookData.cs.meta ├── WebhookExtensions.cs └── WebhookExtensions.cs.meta ├── Samples~ ├── FeedbackSamples │ ├── FeedbackCanvas.prefab │ ├── FeedbackCanvas.prefab.meta │ ├── FeedbackForm.cs │ ├── FeedbackForm.cs.meta │ ├── FeedbackSample.unity │ ├── FeedbackSample.unity.meta │ ├── WebhookData.asset │ └── WebhookData.asset.meta ├── TestingSamples │ ├── Editor.meta │ ├── Editor │ │ ├── WebhookTesterEditor.cs │ │ └── WebhookTesterEditor.cs.meta │ ├── WebhookData.asset │ ├── WebhookData.asset.meta │ ├── WebhookTester.cs │ ├── WebhookTester.cs.meta │ ├── WebhookTesterSample.unity │ └── WebhookTesterSample.unity.meta └── UsageSamples │ ├── AttachmentSender.cs │ ├── AttachmentSender.cs.meta │ ├── ComplexMessageSender.cs │ ├── ComplexMessageSender.cs.meta │ ├── DiscordUsageSample.unity │ ├── DiscordUsageSample.unity.meta │ ├── Editor.meta │ ├── Editor │ ├── AttachmentSenderEditor.cs │ ├── AttachmentSenderEditor.cs.meta │ ├── ComplexMessageSenderEditor.cs │ ├── ComplexMessageSenderEditor.cs.meta │ ├── SimpleMessageSenderEditor.cs │ └── SimpleMessageSenderEditor.cs.meta │ ├── Example1.png.bytes │ ├── Example1.png.bytes.meta │ ├── Example2.png.bytes │ ├── Example2.png.bytes.meta │ ├── LogFile.txt │ ├── LogFile.txt.meta │ ├── SimpleMessageSender.cs │ ├── SimpleMessageSender.cs.meta │ ├── WebhookData.asset │ └── WebhookData.asset.meta ├── Tests.meta ├── Tests ├── Editor.meta └── Editor │ ├── ColorUtilsTest.cs │ ├── ColorUtilsTest.cs.meta │ ├── Lumpn.Discord.Editor.Tests.asmdef │ └── Lumpn.Discord.Editor.Tests.asmdef.meta ├── package.json └── package.json.meta /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | **/[Ll]ibrary/ 6 | **/[Tt]emp/ 7 | **/[Oo]bj/ 8 | **/[Bb]uild/ 9 | **/[Bb]uilds/ 10 | **/[Ll]ogs/ 11 | **/[Mm]emoryCaptures/ 12 | **/[Uu]serSettings/ 13 | 14 | # Asset meta data should only be ignored when the corresponding asset is also ignored 15 | !/[Aa]ssets/**/*.meta 16 | 17 | # Uncomment this line if you wish to ignore the asset store tools plugin 18 | # /[Aa]ssets/AssetStoreTools* 19 | 20 | # Autogenerated Jetbrains Rider plugin 21 | [Aa]ssets/Plugins/Editor/JetBrains* 22 | 23 | # Visual Studio cache directory 24 | .vs/ 25 | 26 | # Gradle cache directory 27 | .gradle/ 28 | 29 | # Autogenerated VS/MD/Consulo solution and project files 30 | ExportedObj/ 31 | .consulo/ 32 | *.csproj 33 | *.unityproj 34 | *.sln 35 | *.suo 36 | *.tmp 37 | *.user 38 | *.userprefs 39 | *.pidb 40 | *.booproj 41 | *.svd 42 | *.pdb 43 | *.mdb 44 | *.opendb 45 | *.VC.db 46 | 47 | # Unity3D generated meta files 48 | *.pidb.meta 49 | *.pdb.meta 50 | *.mdb.meta 51 | 52 | # Unity3D generated file on crash reports 53 | sysinfo.txt 54 | 55 | # Builds 56 | *.apk 57 | *.unitypackage 58 | 59 | # Crashlytics generated file 60 | crashlytics-build.properties 61 | 62 | -------------------------------------------------------------------------------- /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b9e3ec018c6eaeb4fba2a81e9b951e61 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Editor.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | namespace Lumpn.Discord 9 | { 10 | public abstract class Editor : Editor where T : Object 11 | { 12 | public sealed override void OnInspectorGUI() 13 | { 14 | base.OnInspectorGUI(); 15 | 16 | EditorGUILayout.Separator(); 17 | EditorGUILayout.BeginVertical(GUI.skin.box); 18 | OnInspectorGUI((T)target); 19 | EditorGUILayout.EndVertical(); 20 | } 21 | 22 | public abstract void OnInspectorGUI(T target); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Editor/Editor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e19a3a67a9feb4346b92e37a6b843b7a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Lumpn.Discord.Editor.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Lumpn.Discord.Editor", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:fafeaab71f20e104ea642c7be9fb4d4f" 6 | ], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [], 17 | "noEngineReferences": false 18 | } -------------------------------------------------------------------------------- /Editor/Lumpn.Discord.Editor.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8059757dc70ce184ca66c1d3e4244ae1 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Editor/WebhookDataEditor.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | namespace Lumpn.Discord 9 | { 10 | [CustomEditor(typeof(WebhookData))] 11 | public sealed class WebhookDataEditor : Editor 12 | { 13 | private const string helpText = "Please see Discord's documentation for details on how to use webhooks.\n" + 14 | "The Webhook URL should look something like this:\n\n" + 15 | "https://discord.com/api/webhooks/000000000000000000/abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789____"; 16 | 17 | private const string helpUrl = "https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks"; 18 | 19 | public sealed override void OnInspectorGUI(WebhookData data) 20 | { 21 | EditorGUILayout.HelpBox(helpText, MessageType.Info); 22 | 23 | if (GUILayout.Button("Open documentation")) 24 | { 25 | Application.OpenURL(helpUrl); 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Editor/WebhookDataEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e3b550423eba24f4d82b575e5c5f6cc6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Jonas Bötel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /LICENSE.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 0728768fe77477c4a9b2a94d2cfbb1b4 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # unity-discord 2 | Send messages to your [Discord](https://discord.com) channel via [webhooks](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks). 3 | 4 | ## Installation 5 | Download the entire repository from https://github.com/lumpn/unity-discord and use Unity's built in package manager to [Add package from disk](https://docs.unity3d.com/Manual/upm-ui-local.html). 6 | 7 | ## Usage 8 | ```csharp 9 | public WebhookData webhookData; 10 | 11 | IEnumerator Start() 12 | { 13 | var webhook = webhookData.CreateWebhook(); 14 | return webhook.Send("Hello, World!"); 15 | } 16 | ``` 17 | 18 | ## Creating a webhook 19 | Follow Discord's guide to [creating a webhook in Discord](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks), then copy the webhook URL, create a `WebhookData` asset, and paste the webhook URL into the `WebhookData` asset. 20 | 21 | ![Copy Webhook URL](https://support.discord.com/hc/article_attachments/360101553853/Screen_Shot_2020-12-15_at_4.51.38_PM.png) 22 | 23 | ## Samples 24 | Samples are included in the package. Install them via Unity's package manager. 25 | 26 | ```csharp 27 | public WebhookData webhookData; 28 | 29 | IEnumerator Start() 30 | { 31 | var embed = new Embed() 32 | .SetColor(color) 33 | .SetTitle(title) 34 | .SetAuthor(author, authorIconUrl) 35 | .SetDescription(description) 36 | .SetThumbnail(thumbnailUrl) 37 | .SetImage(MediaType.PNG, imageBytes) 38 | .SetFooter(footer, footerIconUrl); 39 | 40 | var webhook = webhookData.CreateWebhook(); 41 | return webhook.Send(embed); 42 | } 43 | ``` 44 | 45 | ![Unity Discord](https://github.com/user-attachments/assets/7604288f-a4f0-4311-80d4-c8a5e8481593) 46 | -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1d8c0d909531aee4e8bd62dfbe587575 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7552a7ee9fc63cb4baf359df288e7221 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System.Runtime.CompilerServices; 6 | 7 | [assembly:InternalsVisibleTo("Lumpn.Discord.Editor.Tests")] 8 | -------------------------------------------------------------------------------- /Runtime/AssemblyInfo.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7c220a8ce2d21ba44824ede9148399dd 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Attachment.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2024 Jonas Boetel 4 | //---------------------------------------- 5 | using System; 6 | 7 | namespace Lumpn.Discord 8 | { 9 | /// 10 | /// https://discord.com/developers/docs/resources/message#attachment-object 11 | /// 12 | [Serializable] 13 | public struct Attachment 14 | { 15 | /// 16 | /// Attachment id. (required) 17 | /// 18 | public int id; 19 | 20 | /// 21 | /// Name of file attached. (required) 22 | /// 23 | public string filename; 24 | 25 | /// 26 | /// Description for the file (max 1024 characters). (optional) 27 | /// 28 | public string description; 29 | 30 | /// 31 | /// The attachment's media type. (optional) 32 | /// https://en.wikipedia.org/wiki/Media_type 33 | /// 34 | public string content_type; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /Runtime/Attachment.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ea72a733dfe74cb4290384d63f56938f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Author.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System; 6 | using System.Collections.Generic; 7 | 8 | namespace Lumpn.Discord 9 | { 10 | /// 11 | /// https://discord.com/developers/docs/resources/channel#embed-object-embed-author-structure 12 | /// 13 | [Serializable] 14 | public struct Author 15 | { 16 | /// 17 | /// Name of the author. (required) 18 | /// 19 | public string name; 20 | 21 | /// 22 | /// URL of the author icon. (optional) 23 | /// 24 | public string icon_url; 25 | 26 | /// 27 | /// URL of the author. (optional) 28 | /// 29 | public string url; 30 | 31 | [NonSerialized] public FileData iconFile; 32 | 33 | internal Author Bake(List outFiles) 34 | { 35 | icon_url = FileDataUtils.Bake(icon_url, iconFile, outFiles); 36 | return this; 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Runtime/Author.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c60f0462d1ef9e64f910b39e3977bcb0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Embed.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System; 6 | using System.Collections.Generic; 7 | 8 | namespace Lumpn.Discord 9 | { 10 | /// 11 | /// https://discord.com/developers/docs/resources/channel#embed-object-embed-structure 12 | /// 13 | [Serializable] 14 | public struct Embed 15 | { 16 | /// 17 | /// Title of the message. (optional) 18 | /// 19 | public string title; 20 | 21 | /// 22 | /// Message text. (optional) 23 | /// 24 | public string description; 25 | 26 | /// 27 | /// Border color code. (required) 28 | /// 29 | /// 30 | public int color; 31 | 32 | /// 33 | /// Author of the message. (optional) 34 | /// 35 | public Author author; 36 | 37 | /// 38 | /// Thumbnail. (optional) 39 | /// 40 | public Thumbnail thumbnail; 41 | 42 | /// 43 | /// Image. (optional) 44 | /// 45 | public Image image; 46 | 47 | /// 48 | /// Video. (optional) 49 | /// 50 | public Video video; 51 | 52 | /// 53 | /// Footer. (optional) 54 | /// 55 | public Footer footer; 56 | 57 | /// 58 | /// Additional fields. (optional) 59 | /// 60 | public Field[] fields; 61 | 62 | internal Embed Bake(List outFiles) 63 | { 64 | author = author.Bake(outFiles); 65 | thumbnail = thumbnail.Bake(outFiles); 66 | image = image.Bake(outFiles); 67 | footer = footer.Bake(outFiles); 68 | return this; 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Runtime/Embed.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 48f1f61a8dd9a8c43ad024a9b7be9428 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/EmbedExtensions.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using Lumpn.Discord.Utils; 6 | using UnityEngine; 7 | using System; 8 | 9 | namespace Lumpn.Discord 10 | { 11 | public static class EmbedExtensions 12 | { 13 | public static Embed SetTitle(this Embed embed, string title) 14 | { 15 | embed.title = title; 16 | return embed; 17 | } 18 | 19 | public static Embed SetDescription(this Embed embed, string description) 20 | { 21 | embed.description = description; 22 | return embed; 23 | } 24 | 25 | public static Embed SetColor(this Embed embed, Color32 color) 26 | { 27 | embed.color = ColorUtils.ToColorCode(color); 28 | return embed; 29 | } 30 | 31 | public static Embed SetColor(this Embed embed, string color) 32 | { 33 | embed.color = ColorUtils.ToColorCode(color); 34 | return embed; 35 | } 36 | 37 | public static Embed SetAuthor(this Embed embed, string name, string icon_url = null, string url = null) 38 | { 39 | embed.author = new Author { name = name, icon_url = icon_url, url = url }; 40 | return embed; 41 | } 42 | 43 | public static Embed SetThumbnail(this Embed embed, string url) 44 | { 45 | embed.thumbnail = new Thumbnail { url = url }; 46 | return embed; 47 | } 48 | 49 | public static Embed SetThumbnail(this Embed embed, MediaType imageType, byte[] imageBytes) 50 | { 51 | Debug.Assert(MediaTypeUtils.IsImage(imageType)); 52 | embed.thumbnail.file = FileData.Create(imageType, imageBytes); 53 | return embed; 54 | } 55 | 56 | public static Embed SetImage(this Embed embed, string url) 57 | { 58 | embed.image = new Image { url = url }; 59 | return embed; 60 | } 61 | 62 | public static Embed SetImage(this Embed embed, MediaType imageType, byte[] imageBytes) 63 | { 64 | Debug.Assert(MediaTypeUtils.IsImage(imageType)); 65 | embed.image.file = FileData.Create(imageType, imageBytes); 66 | return embed; 67 | } 68 | 69 | public static Embed SetVideo(this Embed embed, string url) 70 | { 71 | embed.video = new Video { url = url }; 72 | return embed; 73 | } 74 | 75 | public static Embed SetFooter(this Embed embed, string text, string icon_url = null) 76 | { 77 | embed.footer = new Footer { text = text, icon_url = icon_url }; 78 | return embed; 79 | } 80 | 81 | public static Embed AddField(this Embed embed, string name, string value, bool inline = true) 82 | { 83 | var len = embed.fields?.Length ?? 0; 84 | Array.Resize(ref embed.fields, len + 1); 85 | embed.fields[len] = new Field { name = name, value = value, inline = inline }; 86 | return embed; 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /Runtime/EmbedExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a39f3344aae72a04ebae093593eeec62 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Field.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System; 6 | 7 | namespace Lumpn.Discord 8 | { 9 | /// 10 | /// https://discord.com/developers/docs/resources/channel#embed-object-embed-field-structure 11 | /// 12 | [Serializable] 13 | public struct Field 14 | { 15 | /// 16 | /// Name of the field. (required) 17 | /// 18 | public string name; 19 | 20 | /// 21 | /// Value of the field. (required) 22 | /// 23 | public string value; 24 | 25 | /// 26 | /// Whether or not this field should display inline. Recommended true. (optional) 27 | /// 28 | public bool inline; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /Runtime/Field.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 6224a04e588f8ec40aef63409e196d1d 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/FileData.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2024 Jonas Boetel 4 | //---------------------------------------- 5 | using System.Globalization; 6 | 7 | namespace Lumpn.Discord 8 | { 9 | public struct FileData 10 | { 11 | public MediaType type; 12 | public byte[] bytes; 13 | 14 | public static FileData Create(MediaType fileType, byte[] fileBytes) 15 | { 16 | return new FileData 17 | { 18 | type = fileType, 19 | bytes = fileBytes, 20 | }; 21 | } 22 | 23 | public static implicit operator bool(FileData file) 24 | { 25 | return (file.type != MediaType.None); 26 | } 27 | 28 | internal string CreateURL(int id) 29 | { 30 | return string.Format(CultureInfo.InvariantCulture, "attachment://file{0}.{1}", id, MediaTypeUtils.GetFileExtension(type)); 31 | } 32 | 33 | internal Attachment CreateAttachment(int id) 34 | { 35 | var filename = string.Format(CultureInfo.InvariantCulture, "file{0}.{1}", id, MediaTypeUtils.GetFileExtension(type)); 36 | 37 | return new Attachment 38 | { 39 | id = id, 40 | filename = filename, 41 | content_type = MediaTypeUtils.GetContentType(type), 42 | }; 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Runtime/FileData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 06adb7ab95d8bf340913aafe969e2cb4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/FileDataUtils.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2024 Jonas Boetel 4 | //---------------------------------------- 5 | using System.Collections.Generic; 6 | 7 | namespace Lumpn.Discord 8 | { 9 | public static class FileDataUtils 10 | { 11 | internal static string Bake(string url, FileData file, List outFiles) 12 | { 13 | if (file) 14 | { 15 | url = file.CreateURL(outFiles.Count); 16 | outFiles.Add(file); 17 | } 18 | return url; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Runtime/FileDataUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dfd95b98063e61b4e8ab63a69df7cf12 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Footer.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System; 6 | using System.Collections.Generic; 7 | 8 | namespace Lumpn.Discord 9 | { 10 | /// 11 | /// https://discord.com/developers/docs/resources/channel#embed-object-embed-footer-structure 12 | /// 13 | [Serializable] 14 | public struct Footer 15 | { 16 | /// 17 | /// Text of the footer. (required) 18 | /// 19 | public string text; 20 | 21 | /// 22 | /// URL of the footer icon. (optional) 23 | /// 24 | public string icon_url; 25 | 26 | [NonSerialized] public FileData iconFile; 27 | 28 | internal Footer Bake(List outFiles) 29 | { 30 | icon_url = FileDataUtils.Bake(icon_url, iconFile, outFiles); 31 | return this; 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Runtime/Footer.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ece84adfb5a4f124f91d198db441f897 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Image.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System; 6 | using System.Collections.Generic; 7 | 8 | namespace Lumpn.Discord 9 | { 10 | /// 11 | /// https://discord.com/developers/docs/resources/channel#embed-object-embed-image-structure 12 | /// 13 | [Serializable] 14 | public struct Image 15 | { 16 | /// 17 | /// Source URL of the image. (required) 18 | /// 19 | public string url; 20 | 21 | [NonSerialized] public FileData file; 22 | 23 | internal Image Bake(List outFiles) 24 | { 25 | url = FileDataUtils.Bake(url, file, outFiles); 26 | return this; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Runtime/Image.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2ede897158c970248bd77bc20b83745c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Lumpn.Discord.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Lumpn.Discord", 3 | "rootNamespace": "", 4 | "references": [], 5 | "includePlatforms": [], 6 | "excludePlatforms": [], 7 | "allowUnsafeCode": false, 8 | "overrideReferences": false, 9 | "precompiledReferences": [], 10 | "autoReferenced": true, 11 | "defineConstraints": [], 12 | "versionDefines": [], 13 | "noEngineReferences": false 14 | } -------------------------------------------------------------------------------- /Runtime/Lumpn.Discord.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: fafeaab71f20e104ea642c7be9fb4d4f 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime/MediaType.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2024 Jonas Boetel 4 | //---------------------------------------- 5 | namespace Lumpn.Discord 6 | { 7 | public enum MediaType 8 | { 9 | None, 10 | JPEG, 11 | PNG, 12 | WebP, 13 | GIF, 14 | Text, 15 | Zip, 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Runtime/MediaType.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: dd6e5562c6542ff46938fdac5b516e55 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/MediaTypeUtils.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2024 Jonas Boetel 4 | //---------------------------------------- 5 | namespace Lumpn.Discord 6 | { 7 | public static class MediaTypeUtils 8 | { 9 | public static string GetFileExtension(MediaType type) 10 | { 11 | switch (type) 12 | { 13 | case MediaType.JPEG: return "jpg"; 14 | case MediaType.PNG: return "png"; 15 | case MediaType.WebP: return "webp"; 16 | case MediaType.GIF: return "gif"; 17 | case MediaType.Text: return "txt"; 18 | case MediaType.Zip: return "zip"; 19 | } 20 | return string.Empty; 21 | } 22 | 23 | public static string GetContentType(MediaType type) 24 | { 25 | switch (type) 26 | { 27 | case MediaType.JPEG: return "image/jpeg"; 28 | case MediaType.PNG: return "image/png"; 29 | case MediaType.WebP: return "image/webp"; 30 | case MediaType.GIF: return "image/gif"; 31 | case MediaType.Text: return "text/plain"; 32 | case MediaType.Zip: return "application/zip"; 33 | } 34 | return "application/octet-stream"; 35 | } 36 | 37 | public static bool IsImage(MediaType type) 38 | { 39 | switch (type) 40 | { 41 | case MediaType.JPEG: 42 | case MediaType.PNG: 43 | case MediaType.WebP: 44 | case MediaType.GIF: 45 | return true; 46 | } 47 | return false; 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Runtime/MediaTypeUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4138b57cbf276fd43a9022f4cb17801a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Message.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Linq; 8 | using UnityEngine; 9 | 10 | namespace Lumpn.Discord 11 | { 12 | /// 13 | /// https://discord.com/developers/docs/resources/webhook#execute-webhook-jsonform-params 14 | /// 15 | [Serializable] 16 | public struct Message 17 | { 18 | /// 19 | /// Overrides the username of the webhook. (required) 20 | /// 21 | public string username; 22 | 23 | /// 24 | /// Overrides the avatar of the webhook. Recommended to leave blank. (optional) 25 | /// 26 | public string avatar_url; 27 | 28 | /// 29 | /// Message text. Recommended to use embeds instead. (optional) 30 | /// 31 | public string content; 32 | 33 | /// 34 | /// Embedded messages. (optional) 35 | /// 36 | public Embed[] embeds; 37 | 38 | /// 39 | /// Attachments. (optional) 40 | /// 41 | [SerializeField] private Attachment[] attachments; 42 | 43 | /// 44 | /// Attached files. (optional) 45 | /// 46 | [NonSerialized] public FileData[] files; 47 | 48 | private static readonly Embed[] emptyEmbeds = new Embed[0]; 49 | private static readonly FileData[] emptyFiles = new FileData[0]; 50 | 51 | internal Message Bake(List outFiles) 52 | { 53 | var sourceEmbeds = embeds ?? emptyEmbeds; 54 | var sourceFiles = files ?? emptyFiles; 55 | 56 | outFiles.AddRange(sourceFiles); 57 | embeds = sourceEmbeds.Select(p => p.Bake(outFiles)).ToArray(); 58 | attachments = outFiles.Select(CreateAttachment).ToArray(); 59 | return this; 60 | } 61 | 62 | private static Attachment CreateAttachment(FileData source, int id) 63 | { 64 | return source.CreateAttachment(id); 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /Runtime/Message.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 39a33557e018eef4ab5c037108c6899c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Thumbnail.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System; 6 | using System.Collections.Generic; 7 | 8 | namespace Lumpn.Discord 9 | { 10 | /// 11 | /// https://discord.com/developers/docs/resources/channel#embed-object-embed-thumbnail-structure 12 | /// 13 | [Serializable] 14 | public struct Thumbnail 15 | { 16 | /// 17 | /// URL of the thumbnail image. (required) 18 | /// 19 | public string url; 20 | 21 | [NonSerialized] public FileData file; 22 | 23 | internal Thumbnail Bake(List outFiles) 24 | { 25 | url = FileDataUtils.Bake(url, file, outFiles); 26 | return this; 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /Runtime/Thumbnail.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 86d7840a53ab71841a0bdb594115066a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Utils.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: acbded64bcf0b52499ea7ced2bb251b6 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Utils/ColorUtils.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using UnityEngine; 6 | 7 | namespace Lumpn.Discord.Utils 8 | { 9 | internal static class ColorUtils 10 | { 11 | /// 12 | /// Converts Unity colors to Discord colors. 13 | /// 14 | public static int ToColorCode(Color32 color) 15 | { 16 | return (color.r * 256 * 256) + (color.g * 256) + color.b; 17 | } 18 | 19 | /// 20 | /// Converts HTML colors to Discord colors. 21 | /// 22 | public static int ToColorCode(string htmlColor) 23 | { 24 | var color = ParseHtmlString(htmlColor, Color.magenta); 25 | return ToColorCode(color); 26 | } 27 | 28 | private static Color ParseHtmlString(string htmlColor, Color fallback) 29 | { 30 | if (ColorUtility.TryParseHtmlString(htmlColor, out Color color)) 31 | { 32 | return color; 33 | } 34 | return fallback; 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /Runtime/Utils/ColorUtils.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bcfddc898ae93ee4eb79a0a8c0eb2d12 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Video.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System; 6 | 7 | namespace Lumpn.Discord 8 | { 9 | /// 10 | /// https://discord.com/developers/docs/resources/channel#embed-object-embed-video-structure 11 | /// 12 | [Serializable] 13 | public struct Video 14 | { 15 | /// 16 | /// Source URL of the video. (required) 17 | /// 18 | public string url; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /Runtime/Video.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 55df740fa73d47e4385f8e139785680f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Webhook.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Globalization; 8 | using System.Linq; 9 | using System.Text; 10 | using UnityEngine; 11 | using UnityEngine.Networking; 12 | 13 | namespace Lumpn.Discord 14 | { 15 | public sealed class Webhook 16 | { 17 | private readonly Uri uri; 18 | public readonly string name; 19 | 20 | public Webhook(string url, string name) 21 | { 22 | this.uri = new Uri(url, UriKind.Absolute); 23 | this.name = name; 24 | } 25 | 26 | public UnityWebRequest CreateWebRequest(Message message) 27 | { 28 | var buffer = new List(); 29 | var bakedMessage = message.Bake(buffer); 30 | 31 | var sections = new List(); 32 | sections.Add(CreateDataSection(bakedMessage)); 33 | sections.AddRange(buffer.Select(CreateFileSection)); 34 | 35 | return UnityWebRequest.Post(uri, sections); 36 | } 37 | 38 | private static MultipartFormDataSection CreateDataSection(Message message) 39 | { 40 | var json = JsonUtility.ToJson(message); 41 | return new MultipartFormDataSection("payload_json", json, Encoding.UTF8, "application/json"); 42 | } 43 | 44 | private static MultipartFormFileSection CreateFileSection(FileData file, int index) 45 | { 46 | var name = string.Format(CultureInfo.InvariantCulture, "files[{0}]", index); 47 | return new MultipartFormFileSection(name, file.bytes, null, "application/octet-stream"); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /Runtime/Webhook.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: afaa1e9dafa83714ea885dbe0b569e32 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/WebhookData.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using UnityEngine; 6 | 7 | namespace Lumpn.Discord 8 | { 9 | [HelpURL("https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks")] 10 | [CreateAssetMenu(menuName = "Data/Discord/WebhookData")] 11 | public sealed class WebhookData : ScriptableObject 12 | { 13 | [Tooltip("Discord webhook URL. https://discord.com/api/webhooks/000000000000000000/abcdefghijklmnopqrstuvwxyz_ABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789____")] 14 | [SerializeField] private string webhookUrl; 15 | 16 | [Tooltip("Optional user name override")] 17 | [SerializeField] private string webhookName; 18 | 19 | public Webhook CreateWebhook() 20 | { 21 | return new Webhook(webhookUrl, webhookName); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Runtime/WebhookData.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: feb0865a39cbf5640832c456fc31fd59 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/WebhookExtensions.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System.Collections; 6 | using UnityEngine; 7 | 8 | namespace Lumpn.Discord 9 | { 10 | public static class WebhookExtensions 11 | { 12 | public static IEnumerator Send(this Webhook webhook, string text) 13 | { 14 | return Send(webhook, text, null); 15 | } 16 | 17 | public static IEnumerator Send(this Webhook webhook, FileData file) 18 | { 19 | return Send(webhook, string.Empty, file); 20 | } 21 | 22 | public static IEnumerator Send(this Webhook webhook, string text, FileData file) 23 | { 24 | return Send(webhook, text, new[] { file }); 25 | } 26 | 27 | public static IEnumerator Send(this Webhook webhook, string text, FileData[] files) 28 | { 29 | var message = new Message 30 | { 31 | username = webhook.name, 32 | content = text, 33 | files = files, 34 | }; 35 | return Send(webhook, message); 36 | } 37 | 38 | public static IEnumerator Send(this Webhook webhook, Embed embed) 39 | { 40 | var message = new Message 41 | { 42 | username = webhook.name, 43 | embeds = new[] { embed }, 44 | }; 45 | return Send(webhook, message); 46 | } 47 | 48 | public static IEnumerator Send(this Webhook webhook, Message message) 49 | { 50 | using (var request = webhook.CreateWebRequest(message)) 51 | { 52 | yield return request.SendWebRequest(); 53 | 54 | Debug.AssertFormat(request.responseCode < 300, "{0}: {1}", request.error, request.downloadHandler.text); 55 | } 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /Runtime/WebhookExtensions.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9ec5cf9ae1268b7439647380633538a8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples~/FeedbackSamples/FeedbackCanvas.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &4541480403572254814 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 4541480403572254813} 12 | - component: {fileID: 4541480403572254803} 13 | - component: {fileID: 4541480403572254812} 14 | m_Layer: 5 15 | m_Name: Panel 16 | m_TagString: Untagged 17 | m_Icon: {fileID: 0} 18 | m_NavMeshLayer: 0 19 | m_StaticEditorFlags: 0 20 | m_IsActive: 1 21 | --- !u!224 &4541480403572254813 22 | RectTransform: 23 | m_ObjectHideFlags: 0 24 | m_CorrespondingSourceObject: {fileID: 0} 25 | m_PrefabInstance: {fileID: 0} 26 | m_PrefabAsset: {fileID: 0} 27 | m_GameObject: {fileID: 4541480403572254814} 28 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 29 | m_LocalPosition: {x: 0, y: 0, z: 0} 30 | m_LocalScale: {x: 1, y: 1, z: 1} 31 | m_Children: 32 | - {fileID: 4541480405163847331} 33 | m_Father: {fileID: 4541480405426179567} 34 | m_RootOrder: 0 35 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 36 | m_AnchorMin: {x: 0.2, y: 0.2} 37 | m_AnchorMax: {x: 0.8, y: 0.8} 38 | m_AnchoredPosition: {x: 0, y: 0} 39 | m_SizeDelta: {x: 0, y: 0} 40 | m_Pivot: {x: 0.5, y: 0.5} 41 | --- !u!222 &4541480403572254803 42 | CanvasRenderer: 43 | m_ObjectHideFlags: 0 44 | m_CorrespondingSourceObject: {fileID: 0} 45 | m_PrefabInstance: {fileID: 0} 46 | m_PrefabAsset: {fileID: 0} 47 | m_GameObject: {fileID: 4541480403572254814} 48 | m_CullTransparentMesh: 0 49 | --- !u!114 &4541480403572254812 50 | MonoBehaviour: 51 | m_ObjectHideFlags: 0 52 | m_CorrespondingSourceObject: {fileID: 0} 53 | m_PrefabInstance: {fileID: 0} 54 | m_PrefabAsset: {fileID: 0} 55 | m_GameObject: {fileID: 4541480403572254814} 56 | m_Enabled: 1 57 | m_EditorHideFlags: 0 58 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 59 | m_Name: 60 | m_EditorClassIdentifier: 61 | m_Material: {fileID: 0} 62 | m_Color: {r: 1, g: 1, b: 1, a: 1} 63 | m_RaycastTarget: 1 64 | m_Maskable: 1 65 | m_OnCullStateChanged: 66 | m_PersistentCalls: 67 | m_Calls: [] 68 | m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} 69 | m_Type: 1 70 | m_PreserveAspect: 0 71 | m_FillCenter: 1 72 | m_FillMethod: 4 73 | m_FillAmount: 1 74 | m_FillClockwise: 1 75 | m_FillOrigin: 0 76 | m_UseSpriteMesh: 0 77 | m_PixelsPerUnitMultiplier: 1 78 | --- !u!1 &4541480403578735823 79 | GameObject: 80 | m_ObjectHideFlags: 0 81 | m_CorrespondingSourceObject: {fileID: 0} 82 | m_PrefabInstance: {fileID: 0} 83 | m_PrefabAsset: {fileID: 0} 84 | serializedVersion: 6 85 | m_Component: 86 | - component: {fileID: 4541480403578735822} 87 | - component: {fileID: 4541480403578735821} 88 | m_Layer: 5 89 | m_Name: Item 90 | m_TagString: Untagged 91 | m_Icon: {fileID: 0} 92 | m_NavMeshLayer: 0 93 | m_StaticEditorFlags: 0 94 | m_IsActive: 1 95 | --- !u!224 &4541480403578735822 96 | RectTransform: 97 | m_ObjectHideFlags: 0 98 | m_CorrespondingSourceObject: {fileID: 0} 99 | m_PrefabInstance: {fileID: 0} 100 | m_PrefabAsset: {fileID: 0} 101 | m_GameObject: {fileID: 4541480403578735823} 102 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 103 | m_LocalPosition: {x: 0, y: 0, z: 0} 104 | m_LocalScale: {x: 1, y: 1, z: 1} 105 | m_Children: 106 | - {fileID: 4541480405105677895} 107 | - {fileID: 4541480404945192529} 108 | - {fileID: 4541480404639050424} 109 | m_Father: {fileID: 4541480404330162239} 110 | m_RootOrder: 0 111 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 112 | m_AnchorMin: {x: 0, y: 0.5} 113 | m_AnchorMax: {x: 1, y: 0.5} 114 | m_AnchoredPosition: {x: 0, y: 0} 115 | m_SizeDelta: {x: 0, y: 20} 116 | m_Pivot: {x: 0.5, y: 0.5} 117 | --- !u!114 &4541480403578735821 118 | MonoBehaviour: 119 | m_ObjectHideFlags: 0 120 | m_CorrespondingSourceObject: {fileID: 0} 121 | m_PrefabInstance: {fileID: 0} 122 | m_PrefabAsset: {fileID: 0} 123 | m_GameObject: {fileID: 4541480403578735823} 124 | m_Enabled: 1 125 | m_EditorHideFlags: 0 126 | m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3} 127 | m_Name: 128 | m_EditorClassIdentifier: 129 | m_Navigation: 130 | m_Mode: 3 131 | m_SelectOnUp: {fileID: 0} 132 | m_SelectOnDown: {fileID: 0} 133 | m_SelectOnLeft: {fileID: 0} 134 | m_SelectOnRight: {fileID: 0} 135 | m_Transition: 1 136 | m_Colors: 137 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1} 138 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 139 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} 140 | m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 141 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} 142 | m_ColorMultiplier: 1 143 | m_FadeDuration: 0.1 144 | m_SpriteState: 145 | m_HighlightedSprite: {fileID: 0} 146 | m_PressedSprite: {fileID: 0} 147 | m_SelectedSprite: {fileID: 0} 148 | m_DisabledSprite: {fileID: 0} 149 | m_AnimationTriggers: 150 | m_NormalTrigger: Normal 151 | m_HighlightedTrigger: Highlighted 152 | m_PressedTrigger: Pressed 153 | m_SelectedTrigger: Selected 154 | m_DisabledTrigger: Disabled 155 | m_Interactable: 1 156 | m_TargetGraphic: {fileID: 4541480405105677894} 157 | toggleTransition: 1 158 | graphic: {fileID: 4541480404945192528} 159 | m_Group: {fileID: 0} 160 | onValueChanged: 161 | m_PersistentCalls: 162 | m_Calls: [] 163 | m_IsOn: 1 164 | --- !u!1 &4541480403685948088 165 | GameObject: 166 | m_ObjectHideFlags: 0 167 | m_CorrespondingSourceObject: {fileID: 0} 168 | m_PrefabInstance: {fileID: 0} 169 | m_PrefabAsset: {fileID: 0} 170 | serializedVersion: 6 171 | m_Component: 172 | - component: {fileID: 4541480403685948095} 173 | - component: {fileID: 4541480403685948093} 174 | - component: {fileID: 4541480403685948094} 175 | m_Layer: 5 176 | m_Name: Text 177 | m_TagString: Untagged 178 | m_Icon: {fileID: 0} 179 | m_NavMeshLayer: 0 180 | m_StaticEditorFlags: 0 181 | m_IsActive: 1 182 | --- !u!224 &4541480403685948095 183 | RectTransform: 184 | m_ObjectHideFlags: 0 185 | m_CorrespondingSourceObject: {fileID: 0} 186 | m_PrefabInstance: {fileID: 0} 187 | m_PrefabAsset: {fileID: 0} 188 | m_GameObject: {fileID: 4541480403685948088} 189 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 190 | m_LocalPosition: {x: 0, y: 0, z: 0} 191 | m_LocalScale: {x: 1, y: 1, z: 1} 192 | m_Children: [] 193 | m_Father: {fileID: 4541480405163847331} 194 | m_RootOrder: 0 195 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 196 | m_AnchorMin: {x: 0, y: 0.8} 197 | m_AnchorMax: {x: 0.5, y: 1} 198 | m_AnchoredPosition: {x: 0, y: 0} 199 | m_SizeDelta: {x: -10, y: -10} 200 | m_Pivot: {x: 0.5, y: 0.5} 201 | --- !u!222 &4541480403685948093 202 | CanvasRenderer: 203 | m_ObjectHideFlags: 0 204 | m_CorrespondingSourceObject: {fileID: 0} 205 | m_PrefabInstance: {fileID: 0} 206 | m_PrefabAsset: {fileID: 0} 207 | m_GameObject: {fileID: 4541480403685948088} 208 | m_CullTransparentMesh: 0 209 | --- !u!114 &4541480403685948094 210 | MonoBehaviour: 211 | m_ObjectHideFlags: 0 212 | m_CorrespondingSourceObject: {fileID: 0} 213 | m_PrefabInstance: {fileID: 0} 214 | m_PrefabAsset: {fileID: 0} 215 | m_GameObject: {fileID: 4541480403685948088} 216 | m_Enabled: 1 217 | m_EditorHideFlags: 0 218 | m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} 219 | m_Name: 220 | m_EditorClassIdentifier: 221 | m_Material: {fileID: 0} 222 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 223 | m_RaycastTarget: 1 224 | m_Maskable: 1 225 | m_OnCullStateChanged: 226 | m_PersistentCalls: 227 | m_Calls: [] 228 | m_FontData: 229 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 230 | m_FontSize: 24 231 | m_FontStyle: 1 232 | m_BestFit: 0 233 | m_MinSize: 2 234 | m_MaxSize: 40 235 | m_Alignment: 3 236 | m_AlignByGeometry: 0 237 | m_RichText: 1 238 | m_HorizontalOverflow: 0 239 | m_VerticalOverflow: 0 240 | m_LineSpacing: 1 241 | m_Text: Feedback 242 | --- !u!1 &4541480403707418052 243 | GameObject: 244 | m_ObjectHideFlags: 0 245 | m_CorrespondingSourceObject: {fileID: 0} 246 | m_PrefabInstance: {fileID: 0} 247 | m_PrefabAsset: {fileID: 0} 248 | serializedVersion: 6 249 | m_Component: 250 | - component: {fileID: 4541480403707418107} 251 | - component: {fileID: 4541480403707418105} 252 | - component: {fileID: 4541480403707418106} 253 | m_Layer: 5 254 | m_Name: Placeholder 255 | m_TagString: Untagged 256 | m_Icon: {fileID: 0} 257 | m_NavMeshLayer: 0 258 | m_StaticEditorFlags: 0 259 | m_IsActive: 1 260 | --- !u!224 &4541480403707418107 261 | RectTransform: 262 | m_ObjectHideFlags: 0 263 | m_CorrespondingSourceObject: {fileID: 0} 264 | m_PrefabInstance: {fileID: 0} 265 | m_PrefabAsset: {fileID: 0} 266 | m_GameObject: {fileID: 4541480403707418052} 267 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 268 | m_LocalPosition: {x: 0, y: 0, z: 0} 269 | m_LocalScale: {x: 1, y: 1, z: 1} 270 | m_Children: [] 271 | m_Father: {fileID: 4541480405630644352} 272 | m_RootOrder: 0 273 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 274 | m_AnchorMin: {x: 0, y: 0} 275 | m_AnchorMax: {x: 1, y: 1} 276 | m_AnchoredPosition: {x: 0, y: -0.5} 277 | m_SizeDelta: {x: -20, y: -13} 278 | m_Pivot: {x: 0.5, y: 0.5} 279 | --- !u!222 &4541480403707418105 280 | CanvasRenderer: 281 | m_ObjectHideFlags: 0 282 | m_CorrespondingSourceObject: {fileID: 0} 283 | m_PrefabInstance: {fileID: 0} 284 | m_PrefabAsset: {fileID: 0} 285 | m_GameObject: {fileID: 4541480403707418052} 286 | m_CullTransparentMesh: 0 287 | --- !u!114 &4541480403707418106 288 | MonoBehaviour: 289 | m_ObjectHideFlags: 0 290 | m_CorrespondingSourceObject: {fileID: 0} 291 | m_PrefabInstance: {fileID: 0} 292 | m_PrefabAsset: {fileID: 0} 293 | m_GameObject: {fileID: 4541480403707418052} 294 | m_Enabled: 1 295 | m_EditorHideFlags: 0 296 | m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} 297 | m_Name: 298 | m_EditorClassIdentifier: 299 | m_Material: {fileID: 0} 300 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} 301 | m_RaycastTarget: 1 302 | m_Maskable: 1 303 | m_OnCullStateChanged: 304 | m_PersistentCalls: 305 | m_Calls: [] 306 | m_FontData: 307 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 308 | m_FontSize: 14 309 | m_FontStyle: 2 310 | m_BestFit: 0 311 | m_MinSize: 10 312 | m_MaxSize: 40 313 | m_Alignment: 0 314 | m_AlignByGeometry: 0 315 | m_RichText: 1 316 | m_HorizontalOverflow: 0 317 | m_VerticalOverflow: 0 318 | m_LineSpacing: 1 319 | m_Text: Enter text... 320 | --- !u!1 &4541480403767641776 321 | GameObject: 322 | m_ObjectHideFlags: 0 323 | m_CorrespondingSourceObject: {fileID: 0} 324 | m_PrefabInstance: {fileID: 0} 325 | m_PrefabAsset: {fileID: 0} 326 | serializedVersion: 6 327 | m_Component: 328 | - component: {fileID: 4541480403767641783} 329 | - component: {fileID: 4541480403767641781} 330 | - component: {fileID: 4541480403767641782} 331 | m_Layer: 5 332 | m_Name: Text 333 | m_TagString: Untagged 334 | m_Icon: {fileID: 0} 335 | m_NavMeshLayer: 0 336 | m_StaticEditorFlags: 0 337 | m_IsActive: 1 338 | --- !u!224 &4541480403767641783 339 | RectTransform: 340 | m_ObjectHideFlags: 0 341 | m_CorrespondingSourceObject: {fileID: 0} 342 | m_PrefabInstance: {fileID: 0} 343 | m_PrefabAsset: {fileID: 0} 344 | m_GameObject: {fileID: 4541480403767641776} 345 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 346 | m_LocalPosition: {x: 0, y: 0, z: 0} 347 | m_LocalScale: {x: 1, y: 1, z: 1} 348 | m_Children: [] 349 | m_Father: {fileID: 4541480403959563537} 350 | m_RootOrder: 0 351 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 352 | m_AnchorMin: {x: 0, y: 0} 353 | m_AnchorMax: {x: 1, y: 1} 354 | m_AnchoredPosition: {x: 0, y: 0} 355 | m_SizeDelta: {x: 0, y: 0} 356 | m_Pivot: {x: 0.5, y: 0.5} 357 | --- !u!222 &4541480403767641781 358 | CanvasRenderer: 359 | m_ObjectHideFlags: 0 360 | m_CorrespondingSourceObject: {fileID: 0} 361 | m_PrefabInstance: {fileID: 0} 362 | m_PrefabAsset: {fileID: 0} 363 | m_GameObject: {fileID: 4541480403767641776} 364 | m_CullTransparentMesh: 0 365 | --- !u!114 &4541480403767641782 366 | MonoBehaviour: 367 | m_ObjectHideFlags: 0 368 | m_CorrespondingSourceObject: {fileID: 0} 369 | m_PrefabInstance: {fileID: 0} 370 | m_PrefabAsset: {fileID: 0} 371 | m_GameObject: {fileID: 4541480403767641776} 372 | m_Enabled: 1 373 | m_EditorHideFlags: 0 374 | m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} 375 | m_Name: 376 | m_EditorClassIdentifier: 377 | m_Material: {fileID: 0} 378 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 379 | m_RaycastTarget: 1 380 | m_Maskable: 1 381 | m_OnCullStateChanged: 382 | m_PersistentCalls: 383 | m_Calls: [] 384 | m_FontData: 385 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 386 | m_FontSize: 14 387 | m_FontStyle: 1 388 | m_BestFit: 0 389 | m_MinSize: 10 390 | m_MaxSize: 40 391 | m_Alignment: 4 392 | m_AlignByGeometry: 0 393 | m_RichText: 1 394 | m_HorizontalOverflow: 0 395 | m_VerticalOverflow: 0 396 | m_LineSpacing: 1 397 | m_Text: Cancel 398 | --- !u!1 &4541480403777751349 399 | GameObject: 400 | m_ObjectHideFlags: 0 401 | m_CorrespondingSourceObject: {fileID: 0} 402 | m_PrefabInstance: {fileID: 0} 403 | m_PrefabAsset: {fileID: 0} 404 | serializedVersion: 6 405 | m_Component: 406 | - component: {fileID: 4541480403777751348} 407 | - component: {fileID: 4541480403777751337} 408 | - component: {fileID: 4541480403777751338} 409 | - component: {fileID: 4541480403777751339} 410 | m_Layer: 5 411 | m_Name: Template 412 | m_TagString: Untagged 413 | m_Icon: {fileID: 0} 414 | m_NavMeshLayer: 0 415 | m_StaticEditorFlags: 0 416 | m_IsActive: 0 417 | --- !u!224 &4541480403777751348 418 | RectTransform: 419 | m_ObjectHideFlags: 0 420 | m_CorrespondingSourceObject: {fileID: 0} 421 | m_PrefabInstance: {fileID: 0} 422 | m_PrefabAsset: {fileID: 0} 423 | m_GameObject: {fileID: 4541480403777751349} 424 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 425 | m_LocalPosition: {x: 0, y: 0, z: 0} 426 | m_LocalScale: {x: 1, y: 1, z: 1} 427 | m_Children: 428 | - {fileID: 4541480405126889142} 429 | - {fileID: 4541480403835628877} 430 | m_Father: {fileID: 4541480404425541615} 431 | m_RootOrder: 2 432 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 433 | m_AnchorMin: {x: 0, y: 0} 434 | m_AnchorMax: {x: 1, y: 0} 435 | m_AnchoredPosition: {x: 0, y: 2} 436 | m_SizeDelta: {x: 0, y: 150} 437 | m_Pivot: {x: 0.5, y: 1} 438 | --- !u!222 &4541480403777751337 439 | CanvasRenderer: 440 | m_ObjectHideFlags: 0 441 | m_CorrespondingSourceObject: {fileID: 0} 442 | m_PrefabInstance: {fileID: 0} 443 | m_PrefabAsset: {fileID: 0} 444 | m_GameObject: {fileID: 4541480403777751349} 445 | m_CullTransparentMesh: 0 446 | --- !u!114 &4541480403777751338 447 | MonoBehaviour: 448 | m_ObjectHideFlags: 0 449 | m_CorrespondingSourceObject: {fileID: 0} 450 | m_PrefabInstance: {fileID: 0} 451 | m_PrefabAsset: {fileID: 0} 452 | m_GameObject: {fileID: 4541480403777751349} 453 | m_Enabled: 1 454 | m_EditorHideFlags: 0 455 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 456 | m_Name: 457 | m_EditorClassIdentifier: 458 | m_Material: {fileID: 0} 459 | m_Color: {r: 1, g: 1, b: 1, a: 1} 460 | m_RaycastTarget: 1 461 | m_Maskable: 1 462 | m_OnCullStateChanged: 463 | m_PersistentCalls: 464 | m_Calls: [] 465 | m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} 466 | m_Type: 1 467 | m_PreserveAspect: 0 468 | m_FillCenter: 1 469 | m_FillMethod: 4 470 | m_FillAmount: 1 471 | m_FillClockwise: 1 472 | m_FillOrigin: 0 473 | m_UseSpriteMesh: 0 474 | m_PixelsPerUnitMultiplier: 1 475 | --- !u!114 &4541480403777751339 476 | MonoBehaviour: 477 | m_ObjectHideFlags: 0 478 | m_CorrespondingSourceObject: {fileID: 0} 479 | m_PrefabInstance: {fileID: 0} 480 | m_PrefabAsset: {fileID: 0} 481 | m_GameObject: {fileID: 4541480403777751349} 482 | m_Enabled: 1 483 | m_EditorHideFlags: 0 484 | m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} 485 | m_Name: 486 | m_EditorClassIdentifier: 487 | m_Content: {fileID: 4541480404330162239} 488 | m_Horizontal: 0 489 | m_Vertical: 1 490 | m_MovementType: 2 491 | m_Elasticity: 0.1 492 | m_Inertia: 1 493 | m_DecelerationRate: 0.135 494 | m_ScrollSensitivity: 1 495 | m_Viewport: {fileID: 4541480405126889142} 496 | m_HorizontalScrollbar: {fileID: 0} 497 | m_VerticalScrollbar: {fileID: 4541480403835628876} 498 | m_HorizontalScrollbarVisibility: 0 499 | m_VerticalScrollbarVisibility: 2 500 | m_HorizontalScrollbarSpacing: 0 501 | m_VerticalScrollbarSpacing: -3 502 | m_OnValueChanged: 503 | m_PersistentCalls: 504 | m_Calls: [] 505 | --- !u!1 &4541480403798726331 506 | GameObject: 507 | m_ObjectHideFlags: 0 508 | m_CorrespondingSourceObject: {fileID: 0} 509 | m_PrefabInstance: {fileID: 0} 510 | m_PrefabAsset: {fileID: 0} 511 | serializedVersion: 6 512 | m_Component: 513 | - component: {fileID: 4541480403798726330} 514 | m_Layer: 5 515 | m_Name: Sliding Area 516 | m_TagString: Untagged 517 | m_Icon: {fileID: 0} 518 | m_NavMeshLayer: 0 519 | m_StaticEditorFlags: 0 520 | m_IsActive: 1 521 | --- !u!224 &4541480403798726330 522 | RectTransform: 523 | m_ObjectHideFlags: 0 524 | m_CorrespondingSourceObject: {fileID: 0} 525 | m_PrefabInstance: {fileID: 0} 526 | m_PrefabAsset: {fileID: 0} 527 | m_GameObject: {fileID: 4541480403798726331} 528 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 529 | m_LocalPosition: {x: 0, y: 0, z: 0} 530 | m_LocalScale: {x: 1, y: 1, z: 1} 531 | m_Children: 532 | - {fileID: 4541480404331850938} 533 | m_Father: {fileID: 4541480403835628877} 534 | m_RootOrder: 0 535 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 536 | m_AnchorMin: {x: 0, y: 0} 537 | m_AnchorMax: {x: 1, y: 1} 538 | m_AnchoredPosition: {x: 0, y: 0} 539 | m_SizeDelta: {x: -20, y: -20} 540 | m_Pivot: {x: 0.5, y: 0.5} 541 | --- !u!1 &4541480403835628878 542 | GameObject: 543 | m_ObjectHideFlags: 0 544 | m_CorrespondingSourceObject: {fileID: 0} 545 | m_PrefabInstance: {fileID: 0} 546 | m_PrefabAsset: {fileID: 0} 547 | serializedVersion: 6 548 | m_Component: 549 | - component: {fileID: 4541480403835628877} 550 | - component: {fileID: 4541480403835628866} 551 | - component: {fileID: 4541480403835628867} 552 | - component: {fileID: 4541480403835628876} 553 | m_Layer: 5 554 | m_Name: Scrollbar 555 | m_TagString: Untagged 556 | m_Icon: {fileID: 0} 557 | m_NavMeshLayer: 0 558 | m_StaticEditorFlags: 0 559 | m_IsActive: 1 560 | --- !u!224 &4541480403835628877 561 | RectTransform: 562 | m_ObjectHideFlags: 0 563 | m_CorrespondingSourceObject: {fileID: 0} 564 | m_PrefabInstance: {fileID: 0} 565 | m_PrefabAsset: {fileID: 0} 566 | m_GameObject: {fileID: 4541480403835628878} 567 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 568 | m_LocalPosition: {x: 0, y: 0, z: 0} 569 | m_LocalScale: {x: 1, y: 1, z: 1} 570 | m_Children: 571 | - {fileID: 4541480403798726330} 572 | m_Father: {fileID: 4541480403777751348} 573 | m_RootOrder: 1 574 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 575 | m_AnchorMin: {x: 1, y: 0} 576 | m_AnchorMax: {x: 1, y: 1} 577 | m_AnchoredPosition: {x: 0, y: 0} 578 | m_SizeDelta: {x: 20, y: 0} 579 | m_Pivot: {x: 1, y: 1} 580 | --- !u!222 &4541480403835628866 581 | CanvasRenderer: 582 | m_ObjectHideFlags: 0 583 | m_CorrespondingSourceObject: {fileID: 0} 584 | m_PrefabInstance: {fileID: 0} 585 | m_PrefabAsset: {fileID: 0} 586 | m_GameObject: {fileID: 4541480403835628878} 587 | m_CullTransparentMesh: 0 588 | --- !u!114 &4541480403835628867 589 | MonoBehaviour: 590 | m_ObjectHideFlags: 0 591 | m_CorrespondingSourceObject: {fileID: 0} 592 | m_PrefabInstance: {fileID: 0} 593 | m_PrefabAsset: {fileID: 0} 594 | m_GameObject: {fileID: 4541480403835628878} 595 | m_Enabled: 1 596 | m_EditorHideFlags: 0 597 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 598 | m_Name: 599 | m_EditorClassIdentifier: 600 | m_Material: {fileID: 0} 601 | m_Color: {r: 1, g: 1, b: 1, a: 1} 602 | m_RaycastTarget: 1 603 | m_Maskable: 1 604 | m_OnCullStateChanged: 605 | m_PersistentCalls: 606 | m_Calls: [] 607 | m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} 608 | m_Type: 1 609 | m_PreserveAspect: 0 610 | m_FillCenter: 1 611 | m_FillMethod: 4 612 | m_FillAmount: 1 613 | m_FillClockwise: 1 614 | m_FillOrigin: 0 615 | m_UseSpriteMesh: 0 616 | m_PixelsPerUnitMultiplier: 1 617 | --- !u!114 &4541480403835628876 618 | MonoBehaviour: 619 | m_ObjectHideFlags: 0 620 | m_CorrespondingSourceObject: {fileID: 0} 621 | m_PrefabInstance: {fileID: 0} 622 | m_PrefabAsset: {fileID: 0} 623 | m_GameObject: {fileID: 4541480403835628878} 624 | m_Enabled: 1 625 | m_EditorHideFlags: 0 626 | m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3} 627 | m_Name: 628 | m_EditorClassIdentifier: 629 | m_Navigation: 630 | m_Mode: 3 631 | m_SelectOnUp: {fileID: 0} 632 | m_SelectOnDown: {fileID: 0} 633 | m_SelectOnLeft: {fileID: 0} 634 | m_SelectOnRight: {fileID: 0} 635 | m_Transition: 1 636 | m_Colors: 637 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1} 638 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 639 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} 640 | m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 641 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} 642 | m_ColorMultiplier: 1 643 | m_FadeDuration: 0.1 644 | m_SpriteState: 645 | m_HighlightedSprite: {fileID: 0} 646 | m_PressedSprite: {fileID: 0} 647 | m_SelectedSprite: {fileID: 0} 648 | m_DisabledSprite: {fileID: 0} 649 | m_AnimationTriggers: 650 | m_NormalTrigger: Normal 651 | m_HighlightedTrigger: Highlighted 652 | m_PressedTrigger: Pressed 653 | m_SelectedTrigger: Selected 654 | m_DisabledTrigger: Disabled 655 | m_Interactable: 1 656 | m_TargetGraphic: {fileID: 4541480404331850937} 657 | m_HandleRect: {fileID: 4541480404331850938} 658 | m_Direction: 2 659 | m_Value: 0 660 | m_Size: 0.2 661 | m_NumberOfSteps: 0 662 | m_OnValueChanged: 663 | m_PersistentCalls: 664 | m_Calls: [] 665 | --- !u!1 &4541480403959563538 666 | GameObject: 667 | m_ObjectHideFlags: 0 668 | m_CorrespondingSourceObject: {fileID: 0} 669 | m_PrefabInstance: {fileID: 0} 670 | m_PrefabAsset: {fileID: 0} 671 | serializedVersion: 6 672 | m_Component: 673 | - component: {fileID: 4541480403959563537} 674 | - component: {fileID: 4541480403959563542} 675 | - component: {fileID: 4541480403959563543} 676 | - component: {fileID: 4541480403959563536} 677 | m_Layer: 5 678 | m_Name: Button 679 | m_TagString: Untagged 680 | m_Icon: {fileID: 0} 681 | m_NavMeshLayer: 0 682 | m_StaticEditorFlags: 0 683 | m_IsActive: 1 684 | --- !u!224 &4541480403959563537 685 | RectTransform: 686 | m_ObjectHideFlags: 0 687 | m_CorrespondingSourceObject: {fileID: 0} 688 | m_PrefabInstance: {fileID: 0} 689 | m_PrefabAsset: {fileID: 0} 690 | m_GameObject: {fileID: 4541480403959563538} 691 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 692 | m_LocalPosition: {x: 0, y: 0, z: 0} 693 | m_LocalScale: {x: 1, y: 1, z: 1} 694 | m_Children: 695 | - {fileID: 4541480403767641783} 696 | m_Father: {fileID: 4541480405163847331} 697 | m_RootOrder: 4 698 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 699 | m_AnchorMin: {x: 0.75, y: 0} 700 | m_AnchorMax: {x: 1, y: 0.2} 701 | m_AnchoredPosition: {x: 0, y: 0} 702 | m_SizeDelta: {x: -10, y: -10} 703 | m_Pivot: {x: 0.5, y: 0.5} 704 | --- !u!222 &4541480403959563542 705 | CanvasRenderer: 706 | m_ObjectHideFlags: 0 707 | m_CorrespondingSourceObject: {fileID: 0} 708 | m_PrefabInstance: {fileID: 0} 709 | m_PrefabAsset: {fileID: 0} 710 | m_GameObject: {fileID: 4541480403959563538} 711 | m_CullTransparentMesh: 0 712 | --- !u!114 &4541480403959563543 713 | MonoBehaviour: 714 | m_ObjectHideFlags: 0 715 | m_CorrespondingSourceObject: {fileID: 0} 716 | m_PrefabInstance: {fileID: 0} 717 | m_PrefabAsset: {fileID: 0} 718 | m_GameObject: {fileID: 4541480403959563538} 719 | m_Enabled: 1 720 | m_EditorHideFlags: 0 721 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 722 | m_Name: 723 | m_EditorClassIdentifier: 724 | m_Material: {fileID: 0} 725 | m_Color: {r: 1, g: 1, b: 1, a: 1} 726 | m_RaycastTarget: 1 727 | m_Maskable: 1 728 | m_OnCullStateChanged: 729 | m_PersistentCalls: 730 | m_Calls: [] 731 | m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} 732 | m_Type: 1 733 | m_PreserveAspect: 0 734 | m_FillCenter: 1 735 | m_FillMethod: 4 736 | m_FillAmount: 1 737 | m_FillClockwise: 1 738 | m_FillOrigin: 0 739 | m_UseSpriteMesh: 0 740 | m_PixelsPerUnitMultiplier: 1 741 | --- !u!114 &4541480403959563536 742 | MonoBehaviour: 743 | m_ObjectHideFlags: 0 744 | m_CorrespondingSourceObject: {fileID: 0} 745 | m_PrefabInstance: {fileID: 0} 746 | m_PrefabAsset: {fileID: 0} 747 | m_GameObject: {fileID: 4541480403959563538} 748 | m_Enabled: 1 749 | m_EditorHideFlags: 0 750 | m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} 751 | m_Name: 752 | m_EditorClassIdentifier: 753 | m_Navigation: 754 | m_Mode: 3 755 | m_SelectOnUp: {fileID: 0} 756 | m_SelectOnDown: {fileID: 0} 757 | m_SelectOnLeft: {fileID: 0} 758 | m_SelectOnRight: {fileID: 0} 759 | m_Transition: 1 760 | m_Colors: 761 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1} 762 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 763 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} 764 | m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 765 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} 766 | m_ColorMultiplier: 1 767 | m_FadeDuration: 0.1 768 | m_SpriteState: 769 | m_HighlightedSprite: {fileID: 0} 770 | m_PressedSprite: {fileID: 0} 771 | m_SelectedSprite: {fileID: 0} 772 | m_DisabledSprite: {fileID: 0} 773 | m_AnimationTriggers: 774 | m_NormalTrigger: Normal 775 | m_HighlightedTrigger: Highlighted 776 | m_PressedTrigger: Pressed 777 | m_SelectedTrigger: Selected 778 | m_DisabledTrigger: Disabled 779 | m_Interactable: 1 780 | m_TargetGraphic: {fileID: 4541480403959563543} 781 | m_OnClick: 782 | m_PersistentCalls: 783 | m_Calls: 784 | - m_Target: {fileID: 4541480405426179566} 785 | m_MethodName: Cancel 786 | m_Mode: 1 787 | m_Arguments: 788 | m_ObjectArgument: {fileID: 0} 789 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 790 | m_IntArgument: 0 791 | m_FloatArgument: 0 792 | m_StringArgument: 793 | m_BoolArgument: 0 794 | m_CallState: 2 795 | --- !u!1 &4541480404330162232 796 | GameObject: 797 | m_ObjectHideFlags: 0 798 | m_CorrespondingSourceObject: {fileID: 0} 799 | m_PrefabInstance: {fileID: 0} 800 | m_PrefabAsset: {fileID: 0} 801 | serializedVersion: 6 802 | m_Component: 803 | - component: {fileID: 4541480404330162239} 804 | m_Layer: 5 805 | m_Name: Content 806 | m_TagString: Untagged 807 | m_Icon: {fileID: 0} 808 | m_NavMeshLayer: 0 809 | m_StaticEditorFlags: 0 810 | m_IsActive: 1 811 | --- !u!224 &4541480404330162239 812 | RectTransform: 813 | m_ObjectHideFlags: 0 814 | m_CorrespondingSourceObject: {fileID: 0} 815 | m_PrefabInstance: {fileID: 0} 816 | m_PrefabAsset: {fileID: 0} 817 | m_GameObject: {fileID: 4541480404330162232} 818 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 819 | m_LocalPosition: {x: 0, y: 0, z: 0} 820 | m_LocalScale: {x: 1, y: 1, z: 1} 821 | m_Children: 822 | - {fileID: 4541480403578735822} 823 | m_Father: {fileID: 4541480405126889142} 824 | m_RootOrder: 0 825 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 826 | m_AnchorMin: {x: 0, y: 1} 827 | m_AnchorMax: {x: 1, y: 1} 828 | m_AnchoredPosition: {x: 0, y: 0} 829 | m_SizeDelta: {x: 0, y: 28} 830 | m_Pivot: {x: 0.5, y: 1} 831 | --- !u!1 &4541480404331850939 832 | GameObject: 833 | m_ObjectHideFlags: 0 834 | m_CorrespondingSourceObject: {fileID: 0} 835 | m_PrefabInstance: {fileID: 0} 836 | m_PrefabAsset: {fileID: 0} 837 | serializedVersion: 6 838 | m_Component: 839 | - component: {fileID: 4541480404331850938} 840 | - component: {fileID: 4541480404331850936} 841 | - component: {fileID: 4541480404331850937} 842 | m_Layer: 5 843 | m_Name: Handle 844 | m_TagString: Untagged 845 | m_Icon: {fileID: 0} 846 | m_NavMeshLayer: 0 847 | m_StaticEditorFlags: 0 848 | m_IsActive: 1 849 | --- !u!224 &4541480404331850938 850 | RectTransform: 851 | m_ObjectHideFlags: 0 852 | m_CorrespondingSourceObject: {fileID: 0} 853 | m_PrefabInstance: {fileID: 0} 854 | m_PrefabAsset: {fileID: 0} 855 | m_GameObject: {fileID: 4541480404331850939} 856 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 857 | m_LocalPosition: {x: 0, y: 0, z: 0} 858 | m_LocalScale: {x: 1, y: 1, z: 1} 859 | m_Children: [] 860 | m_Father: {fileID: 4541480403798726330} 861 | m_RootOrder: 0 862 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 863 | m_AnchorMin: {x: 0, y: 0} 864 | m_AnchorMax: {x: 1, y: 0.2} 865 | m_AnchoredPosition: {x: 0, y: 0} 866 | m_SizeDelta: {x: 20, y: 20} 867 | m_Pivot: {x: 0.5, y: 0.5} 868 | --- !u!222 &4541480404331850936 869 | CanvasRenderer: 870 | m_ObjectHideFlags: 0 871 | m_CorrespondingSourceObject: {fileID: 0} 872 | m_PrefabInstance: {fileID: 0} 873 | m_PrefabAsset: {fileID: 0} 874 | m_GameObject: {fileID: 4541480404331850939} 875 | m_CullTransparentMesh: 0 876 | --- !u!114 &4541480404331850937 877 | MonoBehaviour: 878 | m_ObjectHideFlags: 0 879 | m_CorrespondingSourceObject: {fileID: 0} 880 | m_PrefabInstance: {fileID: 0} 881 | m_PrefabAsset: {fileID: 0} 882 | m_GameObject: {fileID: 4541480404331850939} 883 | m_Enabled: 1 884 | m_EditorHideFlags: 0 885 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 886 | m_Name: 887 | m_EditorClassIdentifier: 888 | m_Material: {fileID: 0} 889 | m_Color: {r: 1, g: 1, b: 1, a: 1} 890 | m_RaycastTarget: 1 891 | m_Maskable: 1 892 | m_OnCullStateChanged: 893 | m_PersistentCalls: 894 | m_Calls: [] 895 | m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} 896 | m_Type: 1 897 | m_PreserveAspect: 0 898 | m_FillCenter: 1 899 | m_FillMethod: 4 900 | m_FillAmount: 1 901 | m_FillClockwise: 1 902 | m_FillOrigin: 0 903 | m_UseSpriteMesh: 0 904 | m_PixelsPerUnitMultiplier: 1 905 | --- !u!1 &4541480404425541608 906 | GameObject: 907 | m_ObjectHideFlags: 0 908 | m_CorrespondingSourceObject: {fileID: 0} 909 | m_PrefabInstance: {fileID: 0} 910 | m_PrefabAsset: {fileID: 0} 911 | serializedVersion: 6 912 | m_Component: 913 | - component: {fileID: 4541480404425541615} 914 | - component: {fileID: 4541480404425541612} 915 | - component: {fileID: 4541480404425541613} 916 | - component: {fileID: 4541480404425541614} 917 | m_Layer: 5 918 | m_Name: Dropdown 919 | m_TagString: Untagged 920 | m_Icon: {fileID: 0} 921 | m_NavMeshLayer: 0 922 | m_StaticEditorFlags: 0 923 | m_IsActive: 1 924 | --- !u!224 &4541480404425541615 925 | RectTransform: 926 | m_ObjectHideFlags: 0 927 | m_CorrespondingSourceObject: {fileID: 0} 928 | m_PrefabInstance: {fileID: 0} 929 | m_PrefabAsset: {fileID: 0} 930 | m_GameObject: {fileID: 4541480404425541608} 931 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 932 | m_LocalPosition: {x: 0, y: 0, z: 0} 933 | m_LocalScale: {x: 1, y: 1, z: 1} 934 | m_Children: 935 | - {fileID: 4541480405568828178} 936 | - {fileID: 4541480404580810524} 937 | - {fileID: 4541480403777751348} 938 | m_Father: {fileID: 4541480405163847331} 939 | m_RootOrder: 1 940 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 941 | m_AnchorMin: {x: 0.5, y: 0.8} 942 | m_AnchorMax: {x: 1, y: 1} 943 | m_AnchoredPosition: {x: 0, y: 0} 944 | m_SizeDelta: {x: -10, y: -10} 945 | m_Pivot: {x: 0.5, y: 0.5} 946 | --- !u!222 &4541480404425541612 947 | CanvasRenderer: 948 | m_ObjectHideFlags: 0 949 | m_CorrespondingSourceObject: {fileID: 0} 950 | m_PrefabInstance: {fileID: 0} 951 | m_PrefabAsset: {fileID: 0} 952 | m_GameObject: {fileID: 4541480404425541608} 953 | m_CullTransparentMesh: 0 954 | --- !u!114 &4541480404425541613 955 | MonoBehaviour: 956 | m_ObjectHideFlags: 0 957 | m_CorrespondingSourceObject: {fileID: 0} 958 | m_PrefabInstance: {fileID: 0} 959 | m_PrefabAsset: {fileID: 0} 960 | m_GameObject: {fileID: 4541480404425541608} 961 | m_Enabled: 1 962 | m_EditorHideFlags: 0 963 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 964 | m_Name: 965 | m_EditorClassIdentifier: 966 | m_Material: {fileID: 0} 967 | m_Color: {r: 1, g: 1, b: 1, a: 1} 968 | m_RaycastTarget: 1 969 | m_Maskable: 1 970 | m_OnCullStateChanged: 971 | m_PersistentCalls: 972 | m_Calls: [] 973 | m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} 974 | m_Type: 1 975 | m_PreserveAspect: 0 976 | m_FillCenter: 1 977 | m_FillMethod: 4 978 | m_FillAmount: 1 979 | m_FillClockwise: 1 980 | m_FillOrigin: 0 981 | m_UseSpriteMesh: 0 982 | m_PixelsPerUnitMultiplier: 1 983 | --- !u!114 &4541480404425541614 984 | MonoBehaviour: 985 | m_ObjectHideFlags: 0 986 | m_CorrespondingSourceObject: {fileID: 0} 987 | m_PrefabInstance: {fileID: 0} 988 | m_PrefabAsset: {fileID: 0} 989 | m_GameObject: {fileID: 4541480404425541608} 990 | m_Enabled: 1 991 | m_EditorHideFlags: 0 992 | m_Script: {fileID: 11500000, guid: 0d0b652f32a2cc243917e4028fa0f046, type: 3} 993 | m_Name: 994 | m_EditorClassIdentifier: 995 | m_Navigation: 996 | m_Mode: 3 997 | m_SelectOnUp: {fileID: 0} 998 | m_SelectOnDown: {fileID: 4541480405630644359} 999 | m_SelectOnLeft: {fileID: 0} 1000 | m_SelectOnRight: {fileID: 0} 1001 | m_Transition: 1 1002 | m_Colors: 1003 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1} 1004 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 1005 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} 1006 | m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 1007 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} 1008 | m_ColorMultiplier: 1 1009 | m_FadeDuration: 0.1 1010 | m_SpriteState: 1011 | m_HighlightedSprite: {fileID: 0} 1012 | m_PressedSprite: {fileID: 0} 1013 | m_SelectedSprite: {fileID: 0} 1014 | m_DisabledSprite: {fileID: 0} 1015 | m_AnimationTriggers: 1016 | m_NormalTrigger: Normal 1017 | m_HighlightedTrigger: Highlighted 1018 | m_PressedTrigger: Pressed 1019 | m_SelectedTrigger: Selected 1020 | m_DisabledTrigger: Disabled 1021 | m_Interactable: 1 1022 | m_TargetGraphic: {fileID: 4541480404425541613} 1023 | m_Template: {fileID: 4541480403777751348} 1024 | m_CaptionText: {fileID: 4541480405568828177} 1025 | m_CaptionImage: {fileID: 0} 1026 | m_ItemText: {fileID: 4541480404639050431} 1027 | m_ItemImage: {fileID: 0} 1028 | m_Value: 0 1029 | m_Options: 1030 | m_Options: 1031 | - m_Text: Message 1032 | m_Image: {fileID: 0} 1033 | - m_Text: Praise 1034 | m_Image: {fileID: 0} 1035 | - m_Text: Suggestion 1036 | m_Image: {fileID: 0} 1037 | - m_Text: Bug Report 1038 | m_Image: {fileID: 0} 1039 | m_OnValueChanged: 1040 | m_PersistentCalls: 1041 | m_Calls: [] 1042 | m_AlphaFadeSpeed: 0.15 1043 | --- !u!1 &4541480404533110010 1044 | GameObject: 1045 | m_ObjectHideFlags: 0 1046 | m_CorrespondingSourceObject: {fileID: 0} 1047 | m_PrefabInstance: {fileID: 0} 1048 | m_PrefabAsset: {fileID: 0} 1049 | serializedVersion: 6 1050 | m_Component: 1051 | - component: {fileID: 4541480404533110009} 1052 | - component: {fileID: 4541480404533110015} 1053 | - component: {fileID: 4541480404533110008} 1054 | m_Layer: 5 1055 | m_Name: Text 1056 | m_TagString: Untagged 1057 | m_Icon: {fileID: 0} 1058 | m_NavMeshLayer: 0 1059 | m_StaticEditorFlags: 0 1060 | m_IsActive: 1 1061 | --- !u!224 &4541480404533110009 1062 | RectTransform: 1063 | m_ObjectHideFlags: 0 1064 | m_CorrespondingSourceObject: {fileID: 0} 1065 | m_PrefabInstance: {fileID: 0} 1066 | m_PrefabAsset: {fileID: 0} 1067 | m_GameObject: {fileID: 4541480404533110010} 1068 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1069 | m_LocalPosition: {x: 0, y: 0, z: 0} 1070 | m_LocalScale: {x: 1, y: 1, z: 1} 1071 | m_Children: [] 1072 | m_Father: {fileID: 4541480404534520946} 1073 | m_RootOrder: 0 1074 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1075 | m_AnchorMin: {x: 0, y: 0} 1076 | m_AnchorMax: {x: 1, y: 1} 1077 | m_AnchoredPosition: {x: 0, y: 0} 1078 | m_SizeDelta: {x: 0, y: 0} 1079 | m_Pivot: {x: 0.5, y: 0.5} 1080 | --- !u!222 &4541480404533110015 1081 | CanvasRenderer: 1082 | m_ObjectHideFlags: 0 1083 | m_CorrespondingSourceObject: {fileID: 0} 1084 | m_PrefabInstance: {fileID: 0} 1085 | m_PrefabAsset: {fileID: 0} 1086 | m_GameObject: {fileID: 4541480404533110010} 1087 | m_CullTransparentMesh: 0 1088 | --- !u!114 &4541480404533110008 1089 | MonoBehaviour: 1090 | m_ObjectHideFlags: 0 1091 | m_CorrespondingSourceObject: {fileID: 0} 1092 | m_PrefabInstance: {fileID: 0} 1093 | m_PrefabAsset: {fileID: 0} 1094 | m_GameObject: {fileID: 4541480404533110010} 1095 | m_Enabled: 1 1096 | m_EditorHideFlags: 0 1097 | m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} 1098 | m_Name: 1099 | m_EditorClassIdentifier: 1100 | m_Material: {fileID: 0} 1101 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 1102 | m_RaycastTarget: 1 1103 | m_Maskable: 1 1104 | m_OnCullStateChanged: 1105 | m_PersistentCalls: 1106 | m_Calls: [] 1107 | m_FontData: 1108 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 1109 | m_FontSize: 14 1110 | m_FontStyle: 1 1111 | m_BestFit: 0 1112 | m_MinSize: 10 1113 | m_MaxSize: 40 1114 | m_Alignment: 4 1115 | m_AlignByGeometry: 0 1116 | m_RichText: 1 1117 | m_HorizontalOverflow: 0 1118 | m_VerticalOverflow: 0 1119 | m_LineSpacing: 1 1120 | m_Text: Submit 1121 | --- !u!1 &4541480404534520947 1122 | GameObject: 1123 | m_ObjectHideFlags: 0 1124 | m_CorrespondingSourceObject: {fileID: 0} 1125 | m_PrefabInstance: {fileID: 0} 1126 | m_PrefabAsset: {fileID: 0} 1127 | serializedVersion: 6 1128 | m_Component: 1129 | - component: {fileID: 4541480404534520946} 1130 | - component: {fileID: 4541480404534520951} 1131 | - component: {fileID: 4541480404534520944} 1132 | - component: {fileID: 4541480404534520945} 1133 | m_Layer: 5 1134 | m_Name: Button 1135 | m_TagString: Untagged 1136 | m_Icon: {fileID: 0} 1137 | m_NavMeshLayer: 0 1138 | m_StaticEditorFlags: 0 1139 | m_IsActive: 1 1140 | --- !u!224 &4541480404534520946 1141 | RectTransform: 1142 | m_ObjectHideFlags: 0 1143 | m_CorrespondingSourceObject: {fileID: 0} 1144 | m_PrefabInstance: {fileID: 0} 1145 | m_PrefabAsset: {fileID: 0} 1146 | m_GameObject: {fileID: 4541480404534520947} 1147 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1148 | m_LocalPosition: {x: 0, y: 0, z: 0} 1149 | m_LocalScale: {x: 1, y: 1, z: 1} 1150 | m_Children: 1151 | - {fileID: 4541480404533110009} 1152 | m_Father: {fileID: 4541480405163847331} 1153 | m_RootOrder: 3 1154 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1155 | m_AnchorMin: {x: 0.5, y: 0} 1156 | m_AnchorMax: {x: 0.75, y: 0.2} 1157 | m_AnchoredPosition: {x: 0, y: 0} 1158 | m_SizeDelta: {x: -10, y: -10.000001} 1159 | m_Pivot: {x: 0.5, y: 0.5} 1160 | --- !u!222 &4541480404534520951 1161 | CanvasRenderer: 1162 | m_ObjectHideFlags: 0 1163 | m_CorrespondingSourceObject: {fileID: 0} 1164 | m_PrefabInstance: {fileID: 0} 1165 | m_PrefabAsset: {fileID: 0} 1166 | m_GameObject: {fileID: 4541480404534520947} 1167 | m_CullTransparentMesh: 0 1168 | --- !u!114 &4541480404534520944 1169 | MonoBehaviour: 1170 | m_ObjectHideFlags: 0 1171 | m_CorrespondingSourceObject: {fileID: 0} 1172 | m_PrefabInstance: {fileID: 0} 1173 | m_PrefabAsset: {fileID: 0} 1174 | m_GameObject: {fileID: 4541480404534520947} 1175 | m_Enabled: 1 1176 | m_EditorHideFlags: 0 1177 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 1178 | m_Name: 1179 | m_EditorClassIdentifier: 1180 | m_Material: {fileID: 0} 1181 | m_Color: {r: 1, g: 1, b: 1, a: 1} 1182 | m_RaycastTarget: 1 1183 | m_Maskable: 1 1184 | m_OnCullStateChanged: 1185 | m_PersistentCalls: 1186 | m_Calls: [] 1187 | m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} 1188 | m_Type: 1 1189 | m_PreserveAspect: 0 1190 | m_FillCenter: 1 1191 | m_FillMethod: 4 1192 | m_FillAmount: 1 1193 | m_FillClockwise: 1 1194 | m_FillOrigin: 0 1195 | m_UseSpriteMesh: 0 1196 | m_PixelsPerUnitMultiplier: 1 1197 | --- !u!114 &4541480404534520945 1198 | MonoBehaviour: 1199 | m_ObjectHideFlags: 0 1200 | m_CorrespondingSourceObject: {fileID: 0} 1201 | m_PrefabInstance: {fileID: 0} 1202 | m_PrefabAsset: {fileID: 0} 1203 | m_GameObject: {fileID: 4541480404534520947} 1204 | m_Enabled: 1 1205 | m_EditorHideFlags: 0 1206 | m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} 1207 | m_Name: 1208 | m_EditorClassIdentifier: 1209 | m_Navigation: 1210 | m_Mode: 3 1211 | m_SelectOnUp: {fileID: 0} 1212 | m_SelectOnDown: {fileID: 0} 1213 | m_SelectOnLeft: {fileID: 0} 1214 | m_SelectOnRight: {fileID: 0} 1215 | m_Transition: 1 1216 | m_Colors: 1217 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1} 1218 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 1219 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} 1220 | m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 1221 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} 1222 | m_ColorMultiplier: 1 1223 | m_FadeDuration: 0.1 1224 | m_SpriteState: 1225 | m_HighlightedSprite: {fileID: 0} 1226 | m_PressedSprite: {fileID: 0} 1227 | m_SelectedSprite: {fileID: 0} 1228 | m_DisabledSprite: {fileID: 0} 1229 | m_AnimationTriggers: 1230 | m_NormalTrigger: Normal 1231 | m_HighlightedTrigger: Highlighted 1232 | m_PressedTrigger: Pressed 1233 | m_SelectedTrigger: Selected 1234 | m_DisabledTrigger: Disabled 1235 | m_Interactable: 1 1236 | m_TargetGraphic: {fileID: 4541480404534520944} 1237 | m_OnClick: 1238 | m_PersistentCalls: 1239 | m_Calls: 1240 | - m_Target: {fileID: 4541480405426179566} 1241 | m_MethodName: Submit 1242 | m_Mode: 1 1243 | m_Arguments: 1244 | m_ObjectArgument: {fileID: 0} 1245 | m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine 1246 | m_IntArgument: 0 1247 | m_FloatArgument: 0 1248 | m_StringArgument: 1249 | m_BoolArgument: 0 1250 | m_CallState: 2 1251 | --- !u!1 &4541480404580810525 1252 | GameObject: 1253 | m_ObjectHideFlags: 0 1254 | m_CorrespondingSourceObject: {fileID: 0} 1255 | m_PrefabInstance: {fileID: 0} 1256 | m_PrefabAsset: {fileID: 0} 1257 | serializedVersion: 6 1258 | m_Component: 1259 | - component: {fileID: 4541480404580810524} 1260 | - component: {fileID: 4541480404580810514} 1261 | - component: {fileID: 4541480404580810515} 1262 | m_Layer: 5 1263 | m_Name: Arrow 1264 | m_TagString: Untagged 1265 | m_Icon: {fileID: 0} 1266 | m_NavMeshLayer: 0 1267 | m_StaticEditorFlags: 0 1268 | m_IsActive: 1 1269 | --- !u!224 &4541480404580810524 1270 | RectTransform: 1271 | m_ObjectHideFlags: 0 1272 | m_CorrespondingSourceObject: {fileID: 0} 1273 | m_PrefabInstance: {fileID: 0} 1274 | m_PrefabAsset: {fileID: 0} 1275 | m_GameObject: {fileID: 4541480404580810525} 1276 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1277 | m_LocalPosition: {x: 0, y: 0, z: 0} 1278 | m_LocalScale: {x: 1, y: 1, z: 1} 1279 | m_Children: [] 1280 | m_Father: {fileID: 4541480404425541615} 1281 | m_RootOrder: 1 1282 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1283 | m_AnchorMin: {x: 1, y: 0.5} 1284 | m_AnchorMax: {x: 1, y: 0.5} 1285 | m_AnchoredPosition: {x: -15, y: 0} 1286 | m_SizeDelta: {x: 20, y: 20} 1287 | m_Pivot: {x: 0.5, y: 0.5} 1288 | --- !u!222 &4541480404580810514 1289 | CanvasRenderer: 1290 | m_ObjectHideFlags: 0 1291 | m_CorrespondingSourceObject: {fileID: 0} 1292 | m_PrefabInstance: {fileID: 0} 1293 | m_PrefabAsset: {fileID: 0} 1294 | m_GameObject: {fileID: 4541480404580810525} 1295 | m_CullTransparentMesh: 0 1296 | --- !u!114 &4541480404580810515 1297 | MonoBehaviour: 1298 | m_ObjectHideFlags: 0 1299 | m_CorrespondingSourceObject: {fileID: 0} 1300 | m_PrefabInstance: {fileID: 0} 1301 | m_PrefabAsset: {fileID: 0} 1302 | m_GameObject: {fileID: 4541480404580810525} 1303 | m_Enabled: 1 1304 | m_EditorHideFlags: 0 1305 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 1306 | m_Name: 1307 | m_EditorClassIdentifier: 1308 | m_Material: {fileID: 0} 1309 | m_Color: {r: 1, g: 1, b: 1, a: 1} 1310 | m_RaycastTarget: 1 1311 | m_Maskable: 1 1312 | m_OnCullStateChanged: 1313 | m_PersistentCalls: 1314 | m_Calls: [] 1315 | m_Sprite: {fileID: 10915, guid: 0000000000000000f000000000000000, type: 0} 1316 | m_Type: 0 1317 | m_PreserveAspect: 0 1318 | m_FillCenter: 1 1319 | m_FillMethod: 4 1320 | m_FillAmount: 1 1321 | m_FillClockwise: 1 1322 | m_FillOrigin: 0 1323 | m_UseSpriteMesh: 0 1324 | m_PixelsPerUnitMultiplier: 1 1325 | --- !u!1 &4541480404639050425 1326 | GameObject: 1327 | m_ObjectHideFlags: 0 1328 | m_CorrespondingSourceObject: {fileID: 0} 1329 | m_PrefabInstance: {fileID: 0} 1330 | m_PrefabAsset: {fileID: 0} 1331 | serializedVersion: 6 1332 | m_Component: 1333 | - component: {fileID: 4541480404639050424} 1334 | - component: {fileID: 4541480404639050430} 1335 | - component: {fileID: 4541480404639050431} 1336 | m_Layer: 5 1337 | m_Name: Item Label 1338 | m_TagString: Untagged 1339 | m_Icon: {fileID: 0} 1340 | m_NavMeshLayer: 0 1341 | m_StaticEditorFlags: 0 1342 | m_IsActive: 1 1343 | --- !u!224 &4541480404639050424 1344 | RectTransform: 1345 | m_ObjectHideFlags: 0 1346 | m_CorrespondingSourceObject: {fileID: 0} 1347 | m_PrefabInstance: {fileID: 0} 1348 | m_PrefabAsset: {fileID: 0} 1349 | m_GameObject: {fileID: 4541480404639050425} 1350 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1351 | m_LocalPosition: {x: 0, y: 0, z: 0} 1352 | m_LocalScale: {x: 1, y: 1, z: 1} 1353 | m_Children: [] 1354 | m_Father: {fileID: 4541480403578735822} 1355 | m_RootOrder: 2 1356 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1357 | m_AnchorMin: {x: 0, y: 0} 1358 | m_AnchorMax: {x: 1, y: 1} 1359 | m_AnchoredPosition: {x: 5, y: -0.5} 1360 | m_SizeDelta: {x: -30, y: -3} 1361 | m_Pivot: {x: 0.5, y: 0.5} 1362 | --- !u!222 &4541480404639050430 1363 | CanvasRenderer: 1364 | m_ObjectHideFlags: 0 1365 | m_CorrespondingSourceObject: {fileID: 0} 1366 | m_PrefabInstance: {fileID: 0} 1367 | m_PrefabAsset: {fileID: 0} 1368 | m_GameObject: {fileID: 4541480404639050425} 1369 | m_CullTransparentMesh: 0 1370 | --- !u!114 &4541480404639050431 1371 | MonoBehaviour: 1372 | m_ObjectHideFlags: 0 1373 | m_CorrespondingSourceObject: {fileID: 0} 1374 | m_PrefabInstance: {fileID: 0} 1375 | m_PrefabAsset: {fileID: 0} 1376 | m_GameObject: {fileID: 4541480404639050425} 1377 | m_Enabled: 1 1378 | m_EditorHideFlags: 0 1379 | m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} 1380 | m_Name: 1381 | m_EditorClassIdentifier: 1382 | m_Material: {fileID: 0} 1383 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 1384 | m_RaycastTarget: 1 1385 | m_Maskable: 1 1386 | m_OnCullStateChanged: 1387 | m_PersistentCalls: 1388 | m_Calls: [] 1389 | m_FontData: 1390 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 1391 | m_FontSize: 14 1392 | m_FontStyle: 0 1393 | m_BestFit: 0 1394 | m_MinSize: 10 1395 | m_MaxSize: 40 1396 | m_Alignment: 3 1397 | m_AlignByGeometry: 0 1398 | m_RichText: 1 1399 | m_HorizontalOverflow: 0 1400 | m_VerticalOverflow: 0 1401 | m_LineSpacing: 1 1402 | m_Text: Option A 1403 | --- !u!1 &4541480404945192530 1404 | GameObject: 1405 | m_ObjectHideFlags: 0 1406 | m_CorrespondingSourceObject: {fileID: 0} 1407 | m_PrefabInstance: {fileID: 0} 1408 | m_PrefabAsset: {fileID: 0} 1409 | serializedVersion: 6 1410 | m_Component: 1411 | - component: {fileID: 4541480404945192529} 1412 | - component: {fileID: 4541480404945192535} 1413 | - component: {fileID: 4541480404945192528} 1414 | m_Layer: 5 1415 | m_Name: Item Checkmark 1416 | m_TagString: Untagged 1417 | m_Icon: {fileID: 0} 1418 | m_NavMeshLayer: 0 1419 | m_StaticEditorFlags: 0 1420 | m_IsActive: 1 1421 | --- !u!224 &4541480404945192529 1422 | RectTransform: 1423 | m_ObjectHideFlags: 0 1424 | m_CorrespondingSourceObject: {fileID: 0} 1425 | m_PrefabInstance: {fileID: 0} 1426 | m_PrefabAsset: {fileID: 0} 1427 | m_GameObject: {fileID: 4541480404945192530} 1428 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1429 | m_LocalPosition: {x: 0, y: 0, z: 0} 1430 | m_LocalScale: {x: 1, y: 1, z: 1} 1431 | m_Children: [] 1432 | m_Father: {fileID: 4541480403578735822} 1433 | m_RootOrder: 1 1434 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1435 | m_AnchorMin: {x: 0, y: 0.5} 1436 | m_AnchorMax: {x: 0, y: 0.5} 1437 | m_AnchoredPosition: {x: 10, y: 0} 1438 | m_SizeDelta: {x: 20, y: 20} 1439 | m_Pivot: {x: 0.5, y: 0.5} 1440 | --- !u!222 &4541480404945192535 1441 | CanvasRenderer: 1442 | m_ObjectHideFlags: 0 1443 | m_CorrespondingSourceObject: {fileID: 0} 1444 | m_PrefabInstance: {fileID: 0} 1445 | m_PrefabAsset: {fileID: 0} 1446 | m_GameObject: {fileID: 4541480404945192530} 1447 | m_CullTransparentMesh: 0 1448 | --- !u!114 &4541480404945192528 1449 | MonoBehaviour: 1450 | m_ObjectHideFlags: 0 1451 | m_CorrespondingSourceObject: {fileID: 0} 1452 | m_PrefabInstance: {fileID: 0} 1453 | m_PrefabAsset: {fileID: 0} 1454 | m_GameObject: {fileID: 4541480404945192530} 1455 | m_Enabled: 1 1456 | m_EditorHideFlags: 0 1457 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 1458 | m_Name: 1459 | m_EditorClassIdentifier: 1460 | m_Material: {fileID: 0} 1461 | m_Color: {r: 1, g: 1, b: 1, a: 1} 1462 | m_RaycastTarget: 1 1463 | m_Maskable: 1 1464 | m_OnCullStateChanged: 1465 | m_PersistentCalls: 1466 | m_Calls: [] 1467 | m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0} 1468 | m_Type: 0 1469 | m_PreserveAspect: 0 1470 | m_FillCenter: 1 1471 | m_FillMethod: 4 1472 | m_FillAmount: 1 1473 | m_FillClockwise: 1 1474 | m_FillOrigin: 0 1475 | m_UseSpriteMesh: 0 1476 | m_PixelsPerUnitMultiplier: 1 1477 | --- !u!1 &4541480405105677888 1478 | GameObject: 1479 | m_ObjectHideFlags: 0 1480 | m_CorrespondingSourceObject: {fileID: 0} 1481 | m_PrefabInstance: {fileID: 0} 1482 | m_PrefabAsset: {fileID: 0} 1483 | serializedVersion: 6 1484 | m_Component: 1485 | - component: {fileID: 4541480405105677895} 1486 | - component: {fileID: 4541480405105677893} 1487 | - component: {fileID: 4541480405105677894} 1488 | m_Layer: 5 1489 | m_Name: Item Background 1490 | m_TagString: Untagged 1491 | m_Icon: {fileID: 0} 1492 | m_NavMeshLayer: 0 1493 | m_StaticEditorFlags: 0 1494 | m_IsActive: 1 1495 | --- !u!224 &4541480405105677895 1496 | RectTransform: 1497 | m_ObjectHideFlags: 0 1498 | m_CorrespondingSourceObject: {fileID: 0} 1499 | m_PrefabInstance: {fileID: 0} 1500 | m_PrefabAsset: {fileID: 0} 1501 | m_GameObject: {fileID: 4541480405105677888} 1502 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1503 | m_LocalPosition: {x: 0, y: 0, z: 0} 1504 | m_LocalScale: {x: 1, y: 1, z: 1} 1505 | m_Children: [] 1506 | m_Father: {fileID: 4541480403578735822} 1507 | m_RootOrder: 0 1508 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1509 | m_AnchorMin: {x: 0, y: 0} 1510 | m_AnchorMax: {x: 1, y: 1} 1511 | m_AnchoredPosition: {x: 0, y: 0} 1512 | m_SizeDelta: {x: 0, y: 0} 1513 | m_Pivot: {x: 0.5, y: 0.5} 1514 | --- !u!222 &4541480405105677893 1515 | CanvasRenderer: 1516 | m_ObjectHideFlags: 0 1517 | m_CorrespondingSourceObject: {fileID: 0} 1518 | m_PrefabInstance: {fileID: 0} 1519 | m_PrefabAsset: {fileID: 0} 1520 | m_GameObject: {fileID: 4541480405105677888} 1521 | m_CullTransparentMesh: 0 1522 | --- !u!114 &4541480405105677894 1523 | MonoBehaviour: 1524 | m_ObjectHideFlags: 0 1525 | m_CorrespondingSourceObject: {fileID: 0} 1526 | m_PrefabInstance: {fileID: 0} 1527 | m_PrefabAsset: {fileID: 0} 1528 | m_GameObject: {fileID: 4541480405105677888} 1529 | m_Enabled: 1 1530 | m_EditorHideFlags: 0 1531 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 1532 | m_Name: 1533 | m_EditorClassIdentifier: 1534 | m_Material: {fileID: 0} 1535 | m_Color: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 1536 | m_RaycastTarget: 1 1537 | m_Maskable: 1 1538 | m_OnCullStateChanged: 1539 | m_PersistentCalls: 1540 | m_Calls: [] 1541 | m_Sprite: {fileID: 0} 1542 | m_Type: 0 1543 | m_PreserveAspect: 0 1544 | m_FillCenter: 1 1545 | m_FillMethod: 4 1546 | m_FillAmount: 1 1547 | m_FillClockwise: 1 1548 | m_FillOrigin: 0 1549 | m_UseSpriteMesh: 0 1550 | m_PixelsPerUnitMultiplier: 1 1551 | --- !u!1 &4541480405126889143 1552 | GameObject: 1553 | m_ObjectHideFlags: 0 1554 | m_CorrespondingSourceObject: {fileID: 0} 1555 | m_PrefabInstance: {fileID: 0} 1556 | m_PrefabAsset: {fileID: 0} 1557 | serializedVersion: 6 1558 | m_Component: 1559 | - component: {fileID: 4541480405126889142} 1560 | - component: {fileID: 4541480405126889131} 1561 | - component: {fileID: 4541480405126889140} 1562 | - component: {fileID: 4541480405126889141} 1563 | m_Layer: 5 1564 | m_Name: Viewport 1565 | m_TagString: Untagged 1566 | m_Icon: {fileID: 0} 1567 | m_NavMeshLayer: 0 1568 | m_StaticEditorFlags: 0 1569 | m_IsActive: 1 1570 | --- !u!224 &4541480405126889142 1571 | RectTransform: 1572 | m_ObjectHideFlags: 0 1573 | m_CorrespondingSourceObject: {fileID: 0} 1574 | m_PrefabInstance: {fileID: 0} 1575 | m_PrefabAsset: {fileID: 0} 1576 | m_GameObject: {fileID: 4541480405126889143} 1577 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1578 | m_LocalPosition: {x: 0, y: 0, z: 0} 1579 | m_LocalScale: {x: 1, y: 1, z: 1} 1580 | m_Children: 1581 | - {fileID: 4541480404330162239} 1582 | m_Father: {fileID: 4541480403777751348} 1583 | m_RootOrder: 0 1584 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1585 | m_AnchorMin: {x: 0, y: 0} 1586 | m_AnchorMax: {x: 1, y: 1} 1587 | m_AnchoredPosition: {x: 0, y: 0} 1588 | m_SizeDelta: {x: -18, y: 0} 1589 | m_Pivot: {x: 0, y: 1} 1590 | --- !u!222 &4541480405126889131 1591 | CanvasRenderer: 1592 | m_ObjectHideFlags: 0 1593 | m_CorrespondingSourceObject: {fileID: 0} 1594 | m_PrefabInstance: {fileID: 0} 1595 | m_PrefabAsset: {fileID: 0} 1596 | m_GameObject: {fileID: 4541480405126889143} 1597 | m_CullTransparentMesh: 0 1598 | --- !u!114 &4541480405126889140 1599 | MonoBehaviour: 1600 | m_ObjectHideFlags: 0 1601 | m_CorrespondingSourceObject: {fileID: 0} 1602 | m_PrefabInstance: {fileID: 0} 1603 | m_PrefabAsset: {fileID: 0} 1604 | m_GameObject: {fileID: 4541480405126889143} 1605 | m_Enabled: 1 1606 | m_EditorHideFlags: 0 1607 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 1608 | m_Name: 1609 | m_EditorClassIdentifier: 1610 | m_Material: {fileID: 0} 1611 | m_Color: {r: 1, g: 1, b: 1, a: 1} 1612 | m_RaycastTarget: 1 1613 | m_Maskable: 1 1614 | m_OnCullStateChanged: 1615 | m_PersistentCalls: 1616 | m_Calls: [] 1617 | m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0} 1618 | m_Type: 1 1619 | m_PreserveAspect: 0 1620 | m_FillCenter: 1 1621 | m_FillMethod: 4 1622 | m_FillAmount: 1 1623 | m_FillClockwise: 1 1624 | m_FillOrigin: 0 1625 | m_UseSpriteMesh: 0 1626 | m_PixelsPerUnitMultiplier: 1 1627 | --- !u!114 &4541480405126889141 1628 | MonoBehaviour: 1629 | m_ObjectHideFlags: 0 1630 | m_CorrespondingSourceObject: {fileID: 0} 1631 | m_PrefabInstance: {fileID: 0} 1632 | m_PrefabAsset: {fileID: 0} 1633 | m_GameObject: {fileID: 4541480405126889143} 1634 | m_Enabled: 1 1635 | m_EditorHideFlags: 0 1636 | m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} 1637 | m_Name: 1638 | m_EditorClassIdentifier: 1639 | m_ShowMaskGraphic: 0 1640 | --- !u!1 &4541480405163847340 1641 | GameObject: 1642 | m_ObjectHideFlags: 0 1643 | m_CorrespondingSourceObject: {fileID: 0} 1644 | m_PrefabInstance: {fileID: 0} 1645 | m_PrefabAsset: {fileID: 0} 1646 | serializedVersion: 6 1647 | m_Component: 1648 | - component: {fileID: 4541480405163847331} 1649 | m_Layer: 5 1650 | m_Name: Padding 1651 | m_TagString: Untagged 1652 | m_Icon: {fileID: 0} 1653 | m_NavMeshLayer: 0 1654 | m_StaticEditorFlags: 0 1655 | m_IsActive: 1 1656 | --- !u!224 &4541480405163847331 1657 | RectTransform: 1658 | m_ObjectHideFlags: 0 1659 | m_CorrespondingSourceObject: {fileID: 0} 1660 | m_PrefabInstance: {fileID: 0} 1661 | m_PrefabAsset: {fileID: 0} 1662 | m_GameObject: {fileID: 4541480405163847340} 1663 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1664 | m_LocalPosition: {x: 0, y: 0, z: 0} 1665 | m_LocalScale: {x: 1, y: 1, z: 1} 1666 | m_Children: 1667 | - {fileID: 4541480403685948095} 1668 | - {fileID: 4541480404425541615} 1669 | - {fileID: 4541480405630644352} 1670 | - {fileID: 4541480404534520946} 1671 | - {fileID: 4541480403959563537} 1672 | m_Father: {fileID: 4541480403572254813} 1673 | m_RootOrder: 0 1674 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1675 | m_AnchorMin: {x: 0, y: 0} 1676 | m_AnchorMax: {x: 1, y: 1} 1677 | m_AnchoredPosition: {x: 0, y: 0} 1678 | m_SizeDelta: {x: -20, y: -20} 1679 | m_Pivot: {x: 0.5, y: 0.5} 1680 | --- !u!1 &4541480405426179563 1681 | GameObject: 1682 | m_ObjectHideFlags: 0 1683 | m_CorrespondingSourceObject: {fileID: 0} 1684 | m_PrefabInstance: {fileID: 0} 1685 | m_PrefabAsset: {fileID: 0} 1686 | serializedVersion: 6 1687 | m_Component: 1688 | - component: {fileID: 4541480405426179567} 1689 | - component: {fileID: 4541480405426179560} 1690 | - component: {fileID: 4541480405426179561} 1691 | - component: {fileID: 4541480405426179562} 1692 | - component: {fileID: 4541480405426179566} 1693 | m_Layer: 5 1694 | m_Name: FeedbackCanvas 1695 | m_TagString: Untagged 1696 | m_Icon: {fileID: 0} 1697 | m_NavMeshLayer: 0 1698 | m_StaticEditorFlags: 0 1699 | m_IsActive: 1 1700 | --- !u!224 &4541480405426179567 1701 | RectTransform: 1702 | m_ObjectHideFlags: 0 1703 | m_CorrespondingSourceObject: {fileID: 0} 1704 | m_PrefabInstance: {fileID: 0} 1705 | m_PrefabAsset: {fileID: 0} 1706 | m_GameObject: {fileID: 4541480405426179563} 1707 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1708 | m_LocalPosition: {x: 0, y: 0, z: 0} 1709 | m_LocalScale: {x: 0, y: 0, z: 0} 1710 | m_Children: 1711 | - {fileID: 4541480403572254813} 1712 | m_Father: {fileID: 0} 1713 | m_RootOrder: 0 1714 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1715 | m_AnchorMin: {x: 0, y: 0} 1716 | m_AnchorMax: {x: 0, y: 0} 1717 | m_AnchoredPosition: {x: 0, y: 0} 1718 | m_SizeDelta: {x: 0, y: 0} 1719 | m_Pivot: {x: 0, y: 0} 1720 | --- !u!223 &4541480405426179560 1721 | Canvas: 1722 | m_ObjectHideFlags: 0 1723 | m_CorrespondingSourceObject: {fileID: 0} 1724 | m_PrefabInstance: {fileID: 0} 1725 | m_PrefabAsset: {fileID: 0} 1726 | m_GameObject: {fileID: 4541480405426179563} 1727 | m_Enabled: 1 1728 | serializedVersion: 3 1729 | m_RenderMode: 0 1730 | m_Camera: {fileID: 0} 1731 | m_PlaneDistance: 100 1732 | m_PixelPerfect: 0 1733 | m_ReceivesEvents: 1 1734 | m_OverrideSorting: 0 1735 | m_OverridePixelPerfect: 0 1736 | m_SortingBucketNormalizedSize: 0 1737 | m_AdditionalShaderChannelsFlag: 0 1738 | m_SortingLayerID: 0 1739 | m_SortingOrder: 0 1740 | m_TargetDisplay: 0 1741 | --- !u!114 &4541480405426179561 1742 | MonoBehaviour: 1743 | m_ObjectHideFlags: 0 1744 | m_CorrespondingSourceObject: {fileID: 0} 1745 | m_PrefabInstance: {fileID: 0} 1746 | m_PrefabAsset: {fileID: 0} 1747 | m_GameObject: {fileID: 4541480405426179563} 1748 | m_Enabled: 1 1749 | m_EditorHideFlags: 0 1750 | m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} 1751 | m_Name: 1752 | m_EditorClassIdentifier: 1753 | m_UiScaleMode: 1 1754 | m_ReferencePixelsPerUnit: 100 1755 | m_ScaleFactor: 1 1756 | m_ReferenceResolution: {x: 800, y: 600} 1757 | m_ScreenMatchMode: 1 1758 | m_MatchWidthOrHeight: 0 1759 | m_PhysicalUnit: 3 1760 | m_FallbackScreenDPI: 96 1761 | m_DefaultSpriteDPI: 96 1762 | m_DynamicPixelsPerUnit: 1 1763 | --- !u!114 &4541480405426179562 1764 | MonoBehaviour: 1765 | m_ObjectHideFlags: 0 1766 | m_CorrespondingSourceObject: {fileID: 0} 1767 | m_PrefabInstance: {fileID: 0} 1768 | m_PrefabAsset: {fileID: 0} 1769 | m_GameObject: {fileID: 4541480405426179563} 1770 | m_Enabled: 1 1771 | m_EditorHideFlags: 0 1772 | m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} 1773 | m_Name: 1774 | m_EditorClassIdentifier: 1775 | m_IgnoreReversedGraphics: 1 1776 | m_BlockingObjects: 0 1777 | m_BlockingMask: 1778 | serializedVersion: 2 1779 | m_Bits: 4294967295 1780 | --- !u!114 &4541480405426179566 1781 | MonoBehaviour: 1782 | m_ObjectHideFlags: 0 1783 | m_CorrespondingSourceObject: {fileID: 0} 1784 | m_PrefabInstance: {fileID: 0} 1785 | m_PrefabAsset: {fileID: 0} 1786 | m_GameObject: {fileID: 4541480405426179563} 1787 | m_Enabled: 1 1788 | m_EditorHideFlags: 0 1789 | m_Script: {fileID: 11500000, guid: 153ca756cc37979479b3bcbc5c1114b8, type: 3} 1790 | m_Name: 1791 | m_EditorClassIdentifier: 1792 | canvas: {fileID: 4541480405426179560} 1793 | dropdown: {fileID: 4541480404425541614} 1794 | inputField: {fileID: 4541480405630644359} 1795 | feedbackTypes: 1796 | - name: "\U0001F4AC Message" 1797 | color: {r: 0.7529412, g: 0.79607844, b: 0.8627451, a: 1} 1798 | - name: "\U0001F496 Praise" 1799 | color: {r: 1, g: 0, b: 0.26666668, a: 1} 1800 | - name: "\U0001F4A1 Suggestion" 1801 | color: {r: 0.99607843, g: 0.90588236, b: 0.38039216, a: 1} 1802 | - name: "\U0001F41B Bug Report" 1803 | color: {r: 0.40784314, g: 0.21960784, b: 0.42352942, a: 1} 1804 | webhookData: {fileID: 11400000, guid: 8591ae938b1d2b545a601d5e48f5a1d6, type: 2} 1805 | --- !u!1 &4541480405568828179 1806 | GameObject: 1807 | m_ObjectHideFlags: 0 1808 | m_CorrespondingSourceObject: {fileID: 0} 1809 | m_PrefabInstance: {fileID: 0} 1810 | m_PrefabAsset: {fileID: 0} 1811 | serializedVersion: 6 1812 | m_Component: 1813 | - component: {fileID: 4541480405568828178} 1814 | - component: {fileID: 4541480405568828176} 1815 | - component: {fileID: 4541480405568828177} 1816 | m_Layer: 5 1817 | m_Name: Label 1818 | m_TagString: Untagged 1819 | m_Icon: {fileID: 0} 1820 | m_NavMeshLayer: 0 1821 | m_StaticEditorFlags: 0 1822 | m_IsActive: 1 1823 | --- !u!224 &4541480405568828178 1824 | RectTransform: 1825 | m_ObjectHideFlags: 0 1826 | m_CorrespondingSourceObject: {fileID: 0} 1827 | m_PrefabInstance: {fileID: 0} 1828 | m_PrefabAsset: {fileID: 0} 1829 | m_GameObject: {fileID: 4541480405568828179} 1830 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1831 | m_LocalPosition: {x: 0, y: 0, z: 0} 1832 | m_LocalScale: {x: 1, y: 1, z: 1} 1833 | m_Children: [] 1834 | m_Father: {fileID: 4541480404425541615} 1835 | m_RootOrder: 0 1836 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1837 | m_AnchorMin: {x: 0, y: 0} 1838 | m_AnchorMax: {x: 1, y: 1} 1839 | m_AnchoredPosition: {x: -7.5, y: -0.5} 1840 | m_SizeDelta: {x: -35, y: -13} 1841 | m_Pivot: {x: 0.5, y: 0.5} 1842 | --- !u!222 &4541480405568828176 1843 | CanvasRenderer: 1844 | m_ObjectHideFlags: 0 1845 | m_CorrespondingSourceObject: {fileID: 0} 1846 | m_PrefabInstance: {fileID: 0} 1847 | m_PrefabAsset: {fileID: 0} 1848 | m_GameObject: {fileID: 4541480405568828179} 1849 | m_CullTransparentMesh: 0 1850 | --- !u!114 &4541480405568828177 1851 | MonoBehaviour: 1852 | m_ObjectHideFlags: 0 1853 | m_CorrespondingSourceObject: {fileID: 0} 1854 | m_PrefabInstance: {fileID: 0} 1855 | m_PrefabAsset: {fileID: 0} 1856 | m_GameObject: {fileID: 4541480405568828179} 1857 | m_Enabled: 1 1858 | m_EditorHideFlags: 0 1859 | m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} 1860 | m_Name: 1861 | m_EditorClassIdentifier: 1862 | m_Material: {fileID: 0} 1863 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 1864 | m_RaycastTarget: 1 1865 | m_Maskable: 1 1866 | m_OnCullStateChanged: 1867 | m_PersistentCalls: 1868 | m_Calls: [] 1869 | m_FontData: 1870 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 1871 | m_FontSize: 14 1872 | m_FontStyle: 0 1873 | m_BestFit: 0 1874 | m_MinSize: 10 1875 | m_MaxSize: 40 1876 | m_Alignment: 3 1877 | m_AlignByGeometry: 0 1878 | m_RichText: 1 1879 | m_HorizontalOverflow: 0 1880 | m_VerticalOverflow: 0 1881 | m_LineSpacing: 1 1882 | m_Text: Message 1883 | --- !u!1 &4541480405630644353 1884 | GameObject: 1885 | m_ObjectHideFlags: 0 1886 | m_CorrespondingSourceObject: {fileID: 0} 1887 | m_PrefabInstance: {fileID: 0} 1888 | m_PrefabAsset: {fileID: 0} 1889 | serializedVersion: 6 1890 | m_Component: 1891 | - component: {fileID: 4541480405630644352} 1892 | - component: {fileID: 4541480405630644357} 1893 | - component: {fileID: 4541480405630644358} 1894 | - component: {fileID: 4541480405630644359} 1895 | m_Layer: 5 1896 | m_Name: InputField 1897 | m_TagString: Untagged 1898 | m_Icon: {fileID: 0} 1899 | m_NavMeshLayer: 0 1900 | m_StaticEditorFlags: 0 1901 | m_IsActive: 1 1902 | --- !u!224 &4541480405630644352 1903 | RectTransform: 1904 | m_ObjectHideFlags: 0 1905 | m_CorrespondingSourceObject: {fileID: 0} 1906 | m_PrefabInstance: {fileID: 0} 1907 | m_PrefabAsset: {fileID: 0} 1908 | m_GameObject: {fileID: 4541480405630644353} 1909 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1910 | m_LocalPosition: {x: 0, y: 0, z: 0} 1911 | m_LocalScale: {x: 1, y: 1, z: 1} 1912 | m_Children: 1913 | - {fileID: 4541480403707418107} 1914 | - {fileID: 4541480405649546549} 1915 | m_Father: {fileID: 4541480405163847331} 1916 | m_RootOrder: 2 1917 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1918 | m_AnchorMin: {x: 0, y: 0.2} 1919 | m_AnchorMax: {x: 1, y: 0.8} 1920 | m_AnchoredPosition: {x: 0, y: 0} 1921 | m_SizeDelta: {x: -10, y: -10} 1922 | m_Pivot: {x: 0.5, y: 0.5} 1923 | --- !u!222 &4541480405630644357 1924 | CanvasRenderer: 1925 | m_ObjectHideFlags: 0 1926 | m_CorrespondingSourceObject: {fileID: 0} 1927 | m_PrefabInstance: {fileID: 0} 1928 | m_PrefabAsset: {fileID: 0} 1929 | m_GameObject: {fileID: 4541480405630644353} 1930 | m_CullTransparentMesh: 0 1931 | --- !u!114 &4541480405630644358 1932 | MonoBehaviour: 1933 | m_ObjectHideFlags: 0 1934 | m_CorrespondingSourceObject: {fileID: 0} 1935 | m_PrefabInstance: {fileID: 0} 1936 | m_PrefabAsset: {fileID: 0} 1937 | m_GameObject: {fileID: 4541480405630644353} 1938 | m_Enabled: 1 1939 | m_EditorHideFlags: 0 1940 | m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} 1941 | m_Name: 1942 | m_EditorClassIdentifier: 1943 | m_Material: {fileID: 0} 1944 | m_Color: {r: 1, g: 1, b: 1, a: 1} 1945 | m_RaycastTarget: 1 1946 | m_Maskable: 1 1947 | m_OnCullStateChanged: 1948 | m_PersistentCalls: 1949 | m_Calls: [] 1950 | m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0} 1951 | m_Type: 1 1952 | m_PreserveAspect: 0 1953 | m_FillCenter: 1 1954 | m_FillMethod: 4 1955 | m_FillAmount: 1 1956 | m_FillClockwise: 1 1957 | m_FillOrigin: 0 1958 | m_UseSpriteMesh: 0 1959 | m_PixelsPerUnitMultiplier: 1 1960 | --- !u!114 &4541480405630644359 1961 | MonoBehaviour: 1962 | m_ObjectHideFlags: 0 1963 | m_CorrespondingSourceObject: {fileID: 0} 1964 | m_PrefabInstance: {fileID: 0} 1965 | m_PrefabAsset: {fileID: 0} 1966 | m_GameObject: {fileID: 4541480405630644353} 1967 | m_Enabled: 1 1968 | m_EditorHideFlags: 0 1969 | m_Script: {fileID: 11500000, guid: d199490a83bb2b844b9695cbf13b01ef, type: 3} 1970 | m_Name: 1971 | m_EditorClassIdentifier: 1972 | m_Navigation: 1973 | m_Mode: 3 1974 | m_SelectOnUp: {fileID: 0} 1975 | m_SelectOnDown: {fileID: 0} 1976 | m_SelectOnLeft: {fileID: 0} 1977 | m_SelectOnRight: {fileID: 0} 1978 | m_Transition: 1 1979 | m_Colors: 1980 | m_NormalColor: {r: 1, g: 1, b: 1, a: 1} 1981 | m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 1982 | m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} 1983 | m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} 1984 | m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} 1985 | m_ColorMultiplier: 1 1986 | m_FadeDuration: 0.1 1987 | m_SpriteState: 1988 | m_HighlightedSprite: {fileID: 0} 1989 | m_PressedSprite: {fileID: 0} 1990 | m_SelectedSprite: {fileID: 0} 1991 | m_DisabledSprite: {fileID: 0} 1992 | m_AnimationTriggers: 1993 | m_NormalTrigger: Normal 1994 | m_HighlightedTrigger: Highlighted 1995 | m_PressedTrigger: Pressed 1996 | m_SelectedTrigger: Selected 1997 | m_DisabledTrigger: Disabled 1998 | m_Interactable: 1 1999 | m_TargetGraphic: {fileID: 4541480405630644358} 2000 | m_TextComponent: {fileID: 4541480405649546548} 2001 | m_Placeholder: {fileID: 4541480403707418106} 2002 | m_ContentType: 0 2003 | m_InputType: 0 2004 | m_AsteriskChar: 42 2005 | m_KeyboardType: 0 2006 | m_LineType: 2 2007 | m_HideMobileInput: 0 2008 | m_CharacterValidation: 0 2009 | m_CharacterLimit: 0 2010 | m_OnEndEdit: 2011 | m_PersistentCalls: 2012 | m_Calls: [] 2013 | m_OnValueChanged: 2014 | m_PersistentCalls: 2015 | m_Calls: [] 2016 | m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 2017 | m_CustomCaretColor: 0 2018 | m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} 2019 | m_Text: 2020 | m_CaretBlinkRate: 0.85 2021 | m_CaretWidth: 1 2022 | m_ReadOnly: 0 2023 | m_ShouldActivateOnSelect: 1 2024 | --- !u!1 &4541480405649546550 2025 | GameObject: 2026 | m_ObjectHideFlags: 0 2027 | m_CorrespondingSourceObject: {fileID: 0} 2028 | m_PrefabInstance: {fileID: 0} 2029 | m_PrefabAsset: {fileID: 0} 2030 | serializedVersion: 6 2031 | m_Component: 2032 | - component: {fileID: 4541480405649546549} 2033 | - component: {fileID: 4541480405649546539} 2034 | - component: {fileID: 4541480405649546548} 2035 | m_Layer: 5 2036 | m_Name: Text 2037 | m_TagString: Untagged 2038 | m_Icon: {fileID: 0} 2039 | m_NavMeshLayer: 0 2040 | m_StaticEditorFlags: 0 2041 | m_IsActive: 1 2042 | --- !u!224 &4541480405649546549 2043 | RectTransform: 2044 | m_ObjectHideFlags: 0 2045 | m_CorrespondingSourceObject: {fileID: 0} 2046 | m_PrefabInstance: {fileID: 0} 2047 | m_PrefabAsset: {fileID: 0} 2048 | m_GameObject: {fileID: 4541480405649546550} 2049 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 2050 | m_LocalPosition: {x: 0, y: 0, z: 0} 2051 | m_LocalScale: {x: 1, y: 1, z: 1} 2052 | m_Children: [] 2053 | m_Father: {fileID: 4541480405630644352} 2054 | m_RootOrder: 1 2055 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 2056 | m_AnchorMin: {x: 0, y: 0} 2057 | m_AnchorMax: {x: 1, y: 1} 2058 | m_AnchoredPosition: {x: 0, y: -0.5} 2059 | m_SizeDelta: {x: -20, y: -13} 2060 | m_Pivot: {x: 0.5, y: 0.5} 2061 | --- !u!222 &4541480405649546539 2062 | CanvasRenderer: 2063 | m_ObjectHideFlags: 0 2064 | m_CorrespondingSourceObject: {fileID: 0} 2065 | m_PrefabInstance: {fileID: 0} 2066 | m_PrefabAsset: {fileID: 0} 2067 | m_GameObject: {fileID: 4541480405649546550} 2068 | m_CullTransparentMesh: 0 2069 | --- !u!114 &4541480405649546548 2070 | MonoBehaviour: 2071 | m_ObjectHideFlags: 0 2072 | m_CorrespondingSourceObject: {fileID: 0} 2073 | m_PrefabInstance: {fileID: 0} 2074 | m_PrefabAsset: {fileID: 0} 2075 | m_GameObject: {fileID: 4541480405649546550} 2076 | m_Enabled: 1 2077 | m_EditorHideFlags: 0 2078 | m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} 2079 | m_Name: 2080 | m_EditorClassIdentifier: 2081 | m_Material: {fileID: 0} 2082 | m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} 2083 | m_RaycastTarget: 1 2084 | m_Maskable: 1 2085 | m_OnCullStateChanged: 2086 | m_PersistentCalls: 2087 | m_Calls: [] 2088 | m_FontData: 2089 | m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} 2090 | m_FontSize: 14 2091 | m_FontStyle: 0 2092 | m_BestFit: 0 2093 | m_MinSize: 10 2094 | m_MaxSize: 40 2095 | m_Alignment: 0 2096 | m_AlignByGeometry: 0 2097 | m_RichText: 0 2098 | m_HorizontalOverflow: 0 2099 | m_VerticalOverflow: 0 2100 | m_LineSpacing: 1.2 2101 | m_Text: 2102 | -------------------------------------------------------------------------------- /Samples~/FeedbackSamples/FeedbackCanvas.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 185f312935405b44fa1dbcf0cbe688af 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/FeedbackSamples/FeedbackForm.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using UnityEngine; 6 | using UnityEngine.UI; 7 | 8 | namespace Lumpn.Discord.Samples 9 | { 10 | public sealed class FeedbackForm : MonoBehaviour 11 | { 12 | [System.Serializable] 13 | private struct FeedbackType 14 | { 15 | public string name; 16 | public Color color; 17 | } 18 | 19 | [Header("UI")] 20 | [SerializeField] private Canvas canvas; 21 | [SerializeField] private Dropdown dropdown; 22 | [SerializeField] private InputField inputField; 23 | 24 | [Header("Feedback")] 25 | [SerializeField] private FeedbackType[] feedbackTypes; 26 | 27 | [Header("Webhook")] 28 | [SerializeField] private WebhookData webhookData; 29 | 30 | [ContextMenu(nameof(Show))] 31 | public void Show() 32 | { 33 | canvas.enabled = true; 34 | } 35 | 36 | [ContextMenu(nameof(Hide))] 37 | public void Hide() 38 | { 39 | dropdown.value = 0; 40 | inputField.text = null; 41 | canvas.enabled = false; 42 | } 43 | 44 | public void Submit() 45 | { 46 | var webhook = webhookData.CreateWebhook(); 47 | 48 | var type = feedbackTypes[dropdown.value]; 49 | var message = inputField.text; 50 | 51 | var embed = new Embed() 52 | .SetTitle(type.name) 53 | .SetColor(type.color) 54 | .SetDescription(message); 55 | 56 | StartCoroutine(webhook.Send(embed)); 57 | 58 | Hide(); 59 | } 60 | 61 | public void Cancel() 62 | { 63 | Hide(); 64 | } 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /Samples~/FeedbackSamples/FeedbackForm.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 153ca756cc37979479b3bcbc5c1114b8 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples~/FeedbackSamples/FeedbackSample.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: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 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: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_UseShadowmask: 1 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | debug: 122 | m_Flags: 0 123 | m_NavMeshData: {fileID: 0} 124 | --- !u!1 &1231008143 125 | GameObject: 126 | m_ObjectHideFlags: 0 127 | m_CorrespondingSourceObject: {fileID: 0} 128 | m_PrefabInstance: {fileID: 0} 129 | m_PrefabAsset: {fileID: 0} 130 | serializedVersion: 6 131 | m_Component: 132 | - component: {fileID: 1231008145} 133 | - component: {fileID: 1231008144} 134 | m_Layer: 0 135 | m_Name: Directional Light 136 | m_TagString: Untagged 137 | m_Icon: {fileID: 0} 138 | m_NavMeshLayer: 0 139 | m_StaticEditorFlags: 0 140 | m_IsActive: 1 141 | --- !u!108 &1231008144 142 | Light: 143 | m_ObjectHideFlags: 0 144 | m_CorrespondingSourceObject: {fileID: 0} 145 | m_PrefabInstance: {fileID: 0} 146 | m_PrefabAsset: {fileID: 0} 147 | m_GameObject: {fileID: 1231008143} 148 | m_Enabled: 1 149 | serializedVersion: 10 150 | m_Type: 1 151 | m_Shape: 0 152 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 153 | m_Intensity: 1 154 | m_Range: 10 155 | m_SpotAngle: 30 156 | m_InnerSpotAngle: 21.80208 157 | m_CookieSize: 10 158 | m_Shadows: 159 | m_Type: 2 160 | m_Resolution: -1 161 | m_CustomResolution: -1 162 | m_Strength: 1 163 | m_Bias: 0.05 164 | m_NormalBias: 0.4 165 | m_NearPlane: 0.2 166 | m_CullingMatrixOverride: 167 | e00: 1 168 | e01: 0 169 | e02: 0 170 | e03: 0 171 | e10: 0 172 | e11: 1 173 | e12: 0 174 | e13: 0 175 | e20: 0 176 | e21: 0 177 | e22: 1 178 | e23: 0 179 | e30: 0 180 | e31: 0 181 | e32: 0 182 | e33: 1 183 | m_UseCullingMatrixOverride: 0 184 | m_Cookie: {fileID: 0} 185 | m_DrawHalo: 0 186 | m_Flare: {fileID: 0} 187 | m_RenderMode: 0 188 | m_CullingMask: 189 | serializedVersion: 2 190 | m_Bits: 4294967295 191 | m_RenderingLayerMask: 1 192 | m_Lightmapping: 4 193 | m_LightShadowCasterMode: 0 194 | m_AreaSize: {x: 1, y: 1} 195 | m_BounceIntensity: 1 196 | m_ColorTemperature: 6570 197 | m_UseColorTemperature: 0 198 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 199 | m_UseBoundingSphereOverride: 0 200 | m_ShadowRadius: 0 201 | m_ShadowAngle: 0 202 | --- !u!4 &1231008145 203 | Transform: 204 | m_ObjectHideFlags: 0 205 | m_CorrespondingSourceObject: {fileID: 0} 206 | m_PrefabInstance: {fileID: 0} 207 | m_PrefabAsset: {fileID: 0} 208 | m_GameObject: {fileID: 1231008143} 209 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 210 | m_LocalPosition: {x: 0, y: 3, z: 0} 211 | m_LocalScale: {x: 1, y: 1, z: 1} 212 | m_Children: [] 213 | m_Father: {fileID: 0} 214 | m_RootOrder: 1 215 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 216 | --- !u!1 &1440979823 217 | GameObject: 218 | m_ObjectHideFlags: 0 219 | m_CorrespondingSourceObject: {fileID: 0} 220 | m_PrefabInstance: {fileID: 0} 221 | m_PrefabAsset: {fileID: 0} 222 | serializedVersion: 6 223 | m_Component: 224 | - component: {fileID: 1440979826} 225 | - component: {fileID: 1440979825} 226 | - component: {fileID: 1440979824} 227 | m_Layer: 0 228 | m_Name: EventSystem 229 | m_TagString: Untagged 230 | m_Icon: {fileID: 0} 231 | m_NavMeshLayer: 0 232 | m_StaticEditorFlags: 0 233 | m_IsActive: 1 234 | --- !u!114 &1440979824 235 | MonoBehaviour: 236 | m_ObjectHideFlags: 0 237 | m_CorrespondingSourceObject: {fileID: 0} 238 | m_PrefabInstance: {fileID: 0} 239 | m_PrefabAsset: {fileID: 0} 240 | m_GameObject: {fileID: 1440979823} 241 | m_Enabled: 1 242 | m_EditorHideFlags: 0 243 | m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} 244 | m_Name: 245 | m_EditorClassIdentifier: 246 | m_HorizontalAxis: Horizontal 247 | m_VerticalAxis: Vertical 248 | m_SubmitButton: Submit 249 | m_CancelButton: Cancel 250 | m_InputActionsPerSecond: 10 251 | m_RepeatDelay: 0.5 252 | m_ForceModuleActive: 0 253 | --- !u!114 &1440979825 254 | MonoBehaviour: 255 | m_ObjectHideFlags: 0 256 | m_CorrespondingSourceObject: {fileID: 0} 257 | m_PrefabInstance: {fileID: 0} 258 | m_PrefabAsset: {fileID: 0} 259 | m_GameObject: {fileID: 1440979823} 260 | m_Enabled: 1 261 | m_EditorHideFlags: 0 262 | m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} 263 | m_Name: 264 | m_EditorClassIdentifier: 265 | m_FirstSelected: {fileID: 0} 266 | m_sendNavigationEvents: 1 267 | m_DragThreshold: 10 268 | --- !u!4 &1440979826 269 | Transform: 270 | m_ObjectHideFlags: 0 271 | m_CorrespondingSourceObject: {fileID: 0} 272 | m_PrefabInstance: {fileID: 0} 273 | m_PrefabAsset: {fileID: 0} 274 | m_GameObject: {fileID: 1440979823} 275 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 276 | m_LocalPosition: {x: 0, y: 0, z: 0} 277 | m_LocalScale: {x: 1, y: 1, z: 1} 278 | m_Children: [] 279 | m_Father: {fileID: 0} 280 | m_RootOrder: 3 281 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 282 | --- !u!1 &1711226967 283 | GameObject: 284 | m_ObjectHideFlags: 0 285 | m_CorrespondingSourceObject: {fileID: 0} 286 | m_PrefabInstance: {fileID: 0} 287 | m_PrefabAsset: {fileID: 0} 288 | serializedVersion: 6 289 | m_Component: 290 | - component: {fileID: 1711226969} 291 | - component: {fileID: 1711226968} 292 | m_Layer: 0 293 | m_Name: Main Camera 294 | m_TagString: MainCamera 295 | m_Icon: {fileID: 0} 296 | m_NavMeshLayer: 0 297 | m_StaticEditorFlags: 0 298 | m_IsActive: 1 299 | --- !u!20 &1711226968 300 | Camera: 301 | m_ObjectHideFlags: 0 302 | m_CorrespondingSourceObject: {fileID: 0} 303 | m_PrefabInstance: {fileID: 0} 304 | m_PrefabAsset: {fileID: 0} 305 | m_GameObject: {fileID: 1711226967} 306 | m_Enabled: 1 307 | serializedVersion: 2 308 | m_ClearFlags: 1 309 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 310 | m_projectionMatrixMode: 1 311 | m_GateFitMode: 2 312 | m_FOVAxisMode: 0 313 | m_SensorSize: {x: 36, y: 24} 314 | m_LensShift: {x: 0, y: 0} 315 | m_FocalLength: 50 316 | m_NormalizedViewPortRect: 317 | serializedVersion: 2 318 | x: 0 319 | y: 0 320 | width: 1 321 | height: 1 322 | near clip plane: 0.3 323 | far clip plane: 1000 324 | field of view: 60 325 | orthographic: 0 326 | orthographic size: 5 327 | m_Depth: -1 328 | m_CullingMask: 329 | serializedVersion: 2 330 | m_Bits: 4294967295 331 | m_RenderingPath: -1 332 | m_TargetTexture: {fileID: 0} 333 | m_TargetDisplay: 0 334 | m_TargetEye: 3 335 | m_HDR: 1 336 | m_AllowMSAA: 1 337 | m_AllowDynamicResolution: 0 338 | m_ForceIntoRT: 0 339 | m_OcclusionCulling: 1 340 | m_StereoConvergence: 10 341 | m_StereoSeparation: 0.022 342 | --- !u!4 &1711226969 343 | Transform: 344 | m_ObjectHideFlags: 0 345 | m_CorrespondingSourceObject: {fileID: 0} 346 | m_PrefabInstance: {fileID: 0} 347 | m_PrefabAsset: {fileID: 0} 348 | m_GameObject: {fileID: 1711226967} 349 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 350 | m_LocalPosition: {x: 0, y: 1, z: -10} 351 | m_LocalScale: {x: 1, y: 1, z: 1} 352 | m_Children: [] 353 | m_Father: {fileID: 0} 354 | m_RootOrder: 0 355 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 356 | --- !u!1001 &4541480403939431131 357 | PrefabInstance: 358 | m_ObjectHideFlags: 0 359 | serializedVersion: 2 360 | m_Modification: 361 | m_TransformParent: {fileID: 0} 362 | m_Modifications: 363 | - target: {fileID: 4541480405426179563, guid: 185f312935405b44fa1dbcf0cbe688af, 364 | type: 3} 365 | propertyPath: m_Name 366 | value: FeedbackCanvas 367 | objectReference: {fileID: 0} 368 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 369 | type: 3} 370 | propertyPath: m_Pivot.x 371 | value: 0 372 | objectReference: {fileID: 0} 373 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 374 | type: 3} 375 | propertyPath: m_Pivot.y 376 | value: 0 377 | objectReference: {fileID: 0} 378 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 379 | type: 3} 380 | propertyPath: m_RootOrder 381 | value: 2 382 | objectReference: {fileID: 0} 383 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 384 | type: 3} 385 | propertyPath: m_AnchorMax.x 386 | value: 0 387 | objectReference: {fileID: 0} 388 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 389 | type: 3} 390 | propertyPath: m_AnchorMax.y 391 | value: 0 392 | objectReference: {fileID: 0} 393 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 394 | type: 3} 395 | propertyPath: m_AnchorMin.x 396 | value: 0 397 | objectReference: {fileID: 0} 398 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 399 | type: 3} 400 | propertyPath: m_AnchorMin.y 401 | value: 0 402 | objectReference: {fileID: 0} 403 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 404 | type: 3} 405 | propertyPath: m_SizeDelta.x 406 | value: 0 407 | objectReference: {fileID: 0} 408 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 409 | type: 3} 410 | propertyPath: m_SizeDelta.y 411 | value: 0 412 | objectReference: {fileID: 0} 413 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 414 | type: 3} 415 | propertyPath: m_LocalPosition.x 416 | value: 0 417 | objectReference: {fileID: 0} 418 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 419 | type: 3} 420 | propertyPath: m_LocalPosition.y 421 | value: 0 422 | objectReference: {fileID: 0} 423 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 424 | type: 3} 425 | propertyPath: m_LocalPosition.z 426 | value: 0 427 | objectReference: {fileID: 0} 428 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 429 | type: 3} 430 | propertyPath: m_LocalRotation.w 431 | value: 1 432 | objectReference: {fileID: 0} 433 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 434 | type: 3} 435 | propertyPath: m_LocalRotation.x 436 | value: 0 437 | objectReference: {fileID: 0} 438 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 439 | type: 3} 440 | propertyPath: m_LocalRotation.y 441 | value: 0 442 | objectReference: {fileID: 0} 443 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 444 | type: 3} 445 | propertyPath: m_LocalRotation.z 446 | value: 0 447 | objectReference: {fileID: 0} 448 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 449 | type: 3} 450 | propertyPath: m_AnchoredPosition.x 451 | value: 0 452 | objectReference: {fileID: 0} 453 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 454 | type: 3} 455 | propertyPath: m_AnchoredPosition.y 456 | value: 0 457 | objectReference: {fileID: 0} 458 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 459 | type: 3} 460 | propertyPath: m_LocalEulerAnglesHint.x 461 | value: 0 462 | objectReference: {fileID: 0} 463 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 464 | type: 3} 465 | propertyPath: m_LocalEulerAnglesHint.y 466 | value: 0 467 | objectReference: {fileID: 0} 468 | - target: {fileID: 4541480405426179567, guid: 185f312935405b44fa1dbcf0cbe688af, 469 | type: 3} 470 | propertyPath: m_LocalEulerAnglesHint.z 471 | value: 0 472 | objectReference: {fileID: 0} 473 | m_RemovedComponents: [] 474 | m_SourcePrefab: {fileID: 100100000, guid: 185f312935405b44fa1dbcf0cbe688af, type: 3} 475 | -------------------------------------------------------------------------------- /Samples~/FeedbackSamples/FeedbackSample.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 96b437fe316ca934e96dd645ddd371c3 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/FeedbackSamples/WebhookData.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: feb0865a39cbf5640832c456fc31fd59, type: 3} 13 | m_Name: WebhookData 14 | m_EditorClassIdentifier: 15 | webhookUrl: 16 | webhookName: Feedback 17 | -------------------------------------------------------------------------------- /Samples~/FeedbackSamples/WebhookData.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8591ae938b1d2b545a601d5e48f5a1d6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/TestingSamples/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bbc4d1ecd7bd78e4d92c4e67820647ae 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/TestingSamples/Editor/WebhookTesterEditor.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | namespace Lumpn.Discord.Samples 9 | { 10 | [CustomEditor(typeof(WebhookTester))] 11 | public sealed class WebhookTesterEditor : Editor 12 | { 13 | public sealed override void OnInspectorGUI(WebhookTester tester) 14 | { 15 | if (GUILayout.Button("Send")) 16 | { 17 | tester.StartCoroutine(tester.Run()); 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Samples~/TestingSamples/Editor/WebhookTesterEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 08af6a9ff6ea05342b89015f034e37ff 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples~/TestingSamples/WebhookData.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: feb0865a39cbf5640832c456fc31fd59, type: 3} 13 | m_Name: WebhookData 14 | m_EditorClassIdentifier: 15 | webhookUrl: 16 | -------------------------------------------------------------------------------- /Samples~/TestingSamples/WebhookData.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d43cd797c65b0741b0955fd93a584c6 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/TestingSamples/WebhookTester.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System.Collections; 6 | using System.Text; 7 | using UnityEngine; 8 | 9 | namespace Lumpn.Discord.Samples 10 | { 11 | public sealed class WebhookTester : MonoBehaviour 12 | { 13 | [Header("Webhook")] 14 | [SerializeField] private WebhookData webhookData; 15 | 16 | [Header("Testing")] 17 | [SerializeField] private Message message; 18 | 19 | public IEnumerator Run() 20 | { 21 | var webhook = webhookData.CreateWebhook(); 22 | 23 | using (var request = webhook.CreateWebRequest(message)) 24 | { 25 | yield return request.SendWebRequest(); 26 | 27 | var responseHeaders = new StringBuilder(); 28 | foreach (var header in request.GetResponseHeaders()) 29 | { 30 | responseHeaders.AppendFormat("{0}: {1}\n", header.Key, header.Value); 31 | } 32 | Debug.Log(responseHeaders); 33 | 34 | Debug.LogFormat("HTTP response {0} ({1}):\n{2}", request.responseCode, request.error, request.downloadHandler.text); 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Samples~/TestingSamples/WebhookTester.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f40f3d8e7d06d58489c889e708a192b0 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples~/TestingSamples/WebhookTesterSample.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: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 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: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 0} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 3 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | buildHeightMesh: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &406903805 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 406903808} 135 | - component: {fileID: 406903807} 136 | m_Layer: 0 137 | m_Name: Main Camera 138 | m_TagString: MainCamera 139 | m_Icon: {fileID: 0} 140 | m_NavMeshLayer: 0 141 | m_StaticEditorFlags: 0 142 | m_IsActive: 1 143 | --- !u!20 &406903807 144 | Camera: 145 | m_ObjectHideFlags: 0 146 | m_CorrespondingSourceObject: {fileID: 0} 147 | m_PrefabInstance: {fileID: 0} 148 | m_PrefabAsset: {fileID: 0} 149 | m_GameObject: {fileID: 406903805} 150 | m_Enabled: 1 151 | serializedVersion: 2 152 | m_ClearFlags: 2 153 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 154 | m_projectionMatrixMode: 1 155 | m_GateFitMode: 2 156 | m_FOVAxisMode: 0 157 | m_Iso: 200 158 | m_ShutterSpeed: 0.005 159 | m_Aperture: 16 160 | m_FocusDistance: 10 161 | m_FocalLength: 50 162 | m_BladeCount: 5 163 | m_Curvature: {x: 2, y: 11} 164 | m_BarrelClipping: 0.25 165 | m_Anamorphism: 0 166 | m_SensorSize: {x: 36, y: 24} 167 | m_LensShift: {x: 0, y: 0} 168 | m_NormalizedViewPortRect: 169 | serializedVersion: 2 170 | x: 0 171 | y: 0 172 | width: 1 173 | height: 1 174 | near clip plane: 0.3 175 | far clip plane: 1000 176 | field of view: 60 177 | orthographic: 0 178 | orthographic size: 5 179 | m_Depth: -1 180 | m_CullingMask: 181 | serializedVersion: 2 182 | m_Bits: 4294967295 183 | m_RenderingPath: -1 184 | m_TargetTexture: {fileID: 0} 185 | m_TargetDisplay: 0 186 | m_TargetEye: 3 187 | m_HDR: 1 188 | m_AllowMSAA: 1 189 | m_AllowDynamicResolution: 0 190 | m_ForceIntoRT: 0 191 | m_OcclusionCulling: 1 192 | m_StereoConvergence: 10 193 | m_StereoSeparation: 0.022 194 | --- !u!4 &406903808 195 | Transform: 196 | m_ObjectHideFlags: 0 197 | m_CorrespondingSourceObject: {fileID: 0} 198 | m_PrefabInstance: {fileID: 0} 199 | m_PrefabAsset: {fileID: 0} 200 | m_GameObject: {fileID: 406903805} 201 | serializedVersion: 2 202 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 203 | m_LocalPosition: {x: 0, y: 1, z: -10} 204 | m_LocalScale: {x: 1, y: 1, z: 1} 205 | m_ConstrainProportionsScale: 0 206 | m_Children: [] 207 | m_Father: {fileID: 0} 208 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 209 | --- !u!1 &977768925 210 | GameObject: 211 | m_ObjectHideFlags: 0 212 | m_CorrespondingSourceObject: {fileID: 0} 213 | m_PrefabInstance: {fileID: 0} 214 | m_PrefabAsset: {fileID: 0} 215 | serializedVersion: 6 216 | m_Component: 217 | - component: {fileID: 977768927} 218 | - component: {fileID: 977768926} 219 | m_Layer: 0 220 | m_Name: WebhookTester 221 | m_TagString: Untagged 222 | m_Icon: {fileID: 0} 223 | m_NavMeshLayer: 0 224 | m_StaticEditorFlags: 0 225 | m_IsActive: 1 226 | --- !u!114 &977768926 227 | MonoBehaviour: 228 | m_ObjectHideFlags: 0 229 | m_CorrespondingSourceObject: {fileID: 0} 230 | m_PrefabInstance: {fileID: 0} 231 | m_PrefabAsset: {fileID: 0} 232 | m_GameObject: {fileID: 977768925} 233 | m_Enabled: 1 234 | m_EditorHideFlags: 0 235 | m_Script: {fileID: 11500000, guid: f40f3d8e7d06d58489c889e708a192b0, type: 3} 236 | m_Name: 237 | m_EditorClassIdentifier: 238 | webhookData: {fileID: 11400000, guid: 3d43cd797c65b0741b0955fd93a584c6, type: 2} 239 | message: 240 | username: Alice 241 | avatar_url: 242 | content: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod 243 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 244 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 245 | Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore 246 | eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt 247 | in culpa qui officia deserunt mollit anim id est laborum. 248 | embeds: [] 249 | attachments: [] 250 | --- !u!4 &977768927 251 | Transform: 252 | m_ObjectHideFlags: 0 253 | m_CorrespondingSourceObject: {fileID: 0} 254 | m_PrefabInstance: {fileID: 0} 255 | m_PrefabAsset: {fileID: 0} 256 | m_GameObject: {fileID: 977768925} 257 | serializedVersion: 2 258 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 259 | m_LocalPosition: {x: 0, y: 0, z: 0} 260 | m_LocalScale: {x: 1, y: 1, z: 1} 261 | m_ConstrainProportionsScale: 0 262 | m_Children: [] 263 | m_Father: {fileID: 0} 264 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 265 | --- !u!1 &1728529181 266 | GameObject: 267 | m_ObjectHideFlags: 0 268 | m_CorrespondingSourceObject: {fileID: 0} 269 | m_PrefabInstance: {fileID: 0} 270 | m_PrefabAsset: {fileID: 0} 271 | serializedVersion: 6 272 | m_Component: 273 | - component: {fileID: 1728529183} 274 | - component: {fileID: 1728529182} 275 | m_Layer: 0 276 | m_Name: Directional Light 277 | m_TagString: Untagged 278 | m_Icon: {fileID: 0} 279 | m_NavMeshLayer: 0 280 | m_StaticEditorFlags: 0 281 | m_IsActive: 1 282 | --- !u!108 &1728529182 283 | Light: 284 | m_ObjectHideFlags: 0 285 | m_CorrespondingSourceObject: {fileID: 0} 286 | m_PrefabInstance: {fileID: 0} 287 | m_PrefabAsset: {fileID: 0} 288 | m_GameObject: {fileID: 1728529181} 289 | m_Enabled: 1 290 | serializedVersion: 10 291 | m_Type: 1 292 | m_Shape: 0 293 | m_Color: {r: 1, g: 1, b: 1, a: 1} 294 | m_Intensity: 1 295 | m_Range: 10 296 | m_SpotAngle: 30 297 | m_InnerSpotAngle: 21.80208 298 | m_CookieSize: 10 299 | m_Shadows: 300 | m_Type: 2 301 | m_Resolution: -1 302 | m_CustomResolution: -1 303 | m_Strength: 1 304 | m_Bias: 0.05 305 | m_NormalBias: 0.4 306 | m_NearPlane: 0.2 307 | m_CullingMatrixOverride: 308 | e00: 1 309 | e01: 0 310 | e02: 0 311 | e03: 0 312 | e10: 0 313 | e11: 1 314 | e12: 0 315 | e13: 0 316 | e20: 0 317 | e21: 0 318 | e22: 1 319 | e23: 0 320 | e30: 0 321 | e31: 0 322 | e32: 0 323 | e33: 1 324 | m_UseCullingMatrixOverride: 0 325 | m_Cookie: {fileID: 0} 326 | m_DrawHalo: 0 327 | m_Flare: {fileID: 0} 328 | m_RenderMode: 0 329 | m_CullingMask: 330 | serializedVersion: 2 331 | m_Bits: 4294967295 332 | m_RenderingLayerMask: 1 333 | m_Lightmapping: 4 334 | m_LightShadowCasterMode: 0 335 | m_AreaSize: {x: 1, y: 1} 336 | m_BounceIntensity: 1 337 | m_ColorTemperature: 6570 338 | m_UseColorTemperature: 0 339 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 340 | m_UseBoundingSphereOverride: 0 341 | m_UseViewFrustumForShadowCasterCull: 1 342 | m_ShadowRadius: 0 343 | m_ShadowAngle: 0 344 | --- !u!4 &1728529183 345 | Transform: 346 | m_ObjectHideFlags: 0 347 | m_CorrespondingSourceObject: {fileID: 0} 348 | m_PrefabInstance: {fileID: 0} 349 | m_PrefabAsset: {fileID: 0} 350 | m_GameObject: {fileID: 1728529181} 351 | serializedVersion: 2 352 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 353 | m_LocalPosition: {x: 0, y: 3, z: 0} 354 | m_LocalScale: {x: 1, y: 1, z: 1} 355 | m_ConstrainProportionsScale: 0 356 | m_Children: [] 357 | m_Father: {fileID: 0} 358 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 359 | --- !u!1660057539 &9223372036854775807 360 | SceneRoots: 361 | m_ObjectHideFlags: 0 362 | m_Roots: 363 | - {fileID: 406903808} 364 | - {fileID: 1728529183} 365 | - {fileID: 977768927} 366 | -------------------------------------------------------------------------------- /Samples~/TestingSamples/WebhookTesterSample.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9a2924ce011dd284fbba9493f0657d71 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/AttachmentSender.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System.Collections; 6 | using UnityEngine; 7 | 8 | namespace Lumpn.Discord.Samples 9 | { 10 | public sealed class AttachmentSender : MonoBehaviour 11 | { 12 | [Header("Webhook")] 13 | [SerializeField] private WebhookData webhookData; 14 | 15 | [Header("Message")] 16 | [SerializeField] private string text; 17 | [SerializeField] private TextAsset image1; 18 | [SerializeField] private TextAsset image2; 19 | [SerializeField] private TextAsset file1; 20 | 21 | public IEnumerator Run() 22 | { 23 | var attachment1 = FileData.Create(MediaType.PNG, image1.bytes); 24 | var attachment2 = FileData.Create(MediaType.PNG, image2.bytes); 25 | var attachment3 = FileData.Create(MediaType.Text, file1.bytes); 26 | 27 | var webhook = webhookData.CreateWebhook(); 28 | return webhook.Send(text, new[] { attachment1, attachment2, attachment3 }); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/AttachmentSender.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3cb52a5a9b5f150428b08d4d81b2fd6a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/ComplexMessageSender.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System.Collections; 6 | using UnityEngine; 7 | 8 | namespace Lumpn.Discord.Samples 9 | { 10 | public sealed class ComplexMessageSender : MonoBehaviour 11 | { 12 | [Header("Webhook")] 13 | [SerializeField] private WebhookData webhookData; 14 | 15 | [Header("Message")] 16 | [SerializeField] private Color color; 17 | [SerializeField] private string title; 18 | [SerializeField] private string author; 19 | [SerializeField, TextArea] private string description; 20 | [SerializeField] private TextAsset image; 21 | [SerializeField] private string thumbnailUrl; 22 | [SerializeField] private string footer; 23 | 24 | public IEnumerator Run() 25 | { 26 | var embed = new Embed() 27 | .SetColor(color) 28 | .SetTitle(title) 29 | .SetAuthor(author, thumbnailUrl) 30 | .SetDescription(description) 31 | .SetThumbnail(thumbnailUrl) 32 | .SetImage(MediaType.PNG, image.bytes) 33 | .SetFooter(footer, thumbnailUrl); 34 | 35 | var webhook = webhookData.CreateWebhook(); 36 | return webhook.Send(embed); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/ComplexMessageSender.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 47f7774efd019f34dae5e5b13a8cfe5c 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/DiscordUsageSample.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: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 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: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 0} 101 | m_LightingSettings: {fileID: 0} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 3 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | buildHeightMesh: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &918754683 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 918754685} 135 | - component: {fileID: 918754684} 136 | m_Layer: 0 137 | m_Name: ComplexMessageSender 138 | m_TagString: Untagged 139 | m_Icon: {fileID: 0} 140 | m_NavMeshLayer: 0 141 | m_StaticEditorFlags: 0 142 | m_IsActive: 1 143 | --- !u!114 &918754684 144 | MonoBehaviour: 145 | m_ObjectHideFlags: 0 146 | m_CorrespondingSourceObject: {fileID: 0} 147 | m_PrefabInstance: {fileID: 0} 148 | m_PrefabAsset: {fileID: 0} 149 | m_GameObject: {fileID: 918754683} 150 | m_Enabled: 1 151 | m_EditorHideFlags: 0 152 | m_Script: {fileID: 11500000, guid: 47f7774efd019f34dae5e5b13a8cfe5c, type: 3} 153 | m_Name: 154 | m_EditorClassIdentifier: 155 | webhookData: {fileID: 11400000, guid: c6d7c6f7ec2d5214a8f471ad3fcf4b08, type: 2} 156 | color: {r: 0.9, g: 0.65999997, b: 0.17999998, a: 1} 157 | title: Hello, World! 158 | author: Alice 159 | description: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod 160 | tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 161 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 162 | image: {fileID: 4900000, guid: 1f075d0f60fda714ca266d7d7c26305e, type: 3} 163 | thumbnailUrl: https://i.imgur.com/wSTFkRM.png 164 | footer: 'PS: Hi Bob!' 165 | --- !u!4 &918754685 166 | Transform: 167 | m_ObjectHideFlags: 0 168 | m_CorrespondingSourceObject: {fileID: 0} 169 | m_PrefabInstance: {fileID: 0} 170 | m_PrefabAsset: {fileID: 0} 171 | m_GameObject: {fileID: 918754683} 172 | serializedVersion: 2 173 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 174 | m_LocalPosition: {x: 0, y: 0, z: 0} 175 | m_LocalScale: {x: 1, y: 1, z: 1} 176 | m_ConstrainProportionsScale: 1 177 | m_Children: [] 178 | m_Father: {fileID: 0} 179 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 180 | --- !u!1 &1367843232 181 | GameObject: 182 | m_ObjectHideFlags: 0 183 | m_CorrespondingSourceObject: {fileID: 0} 184 | m_PrefabInstance: {fileID: 0} 185 | m_PrefabAsset: {fileID: 0} 186 | serializedVersion: 6 187 | m_Component: 188 | - component: {fileID: 1367843234} 189 | - component: {fileID: 1367843233} 190 | m_Layer: 0 191 | m_Name: Directional Light 192 | m_TagString: Untagged 193 | m_Icon: {fileID: 0} 194 | m_NavMeshLayer: 0 195 | m_StaticEditorFlags: 0 196 | m_IsActive: 1 197 | --- !u!108 &1367843233 198 | Light: 199 | m_ObjectHideFlags: 0 200 | m_CorrespondingSourceObject: {fileID: 0} 201 | m_PrefabInstance: {fileID: 0} 202 | m_PrefabAsset: {fileID: 0} 203 | m_GameObject: {fileID: 1367843232} 204 | m_Enabled: 1 205 | serializedVersion: 10 206 | m_Type: 1 207 | m_Shape: 0 208 | m_Color: {r: 1, g: 1, b: 1, a: 1} 209 | m_Intensity: 1 210 | m_Range: 10 211 | m_SpotAngle: 30 212 | m_InnerSpotAngle: 21.80208 213 | m_CookieSize: 10 214 | m_Shadows: 215 | m_Type: 2 216 | m_Resolution: -1 217 | m_CustomResolution: -1 218 | m_Strength: 1 219 | m_Bias: 0.05 220 | m_NormalBias: 0.4 221 | m_NearPlane: 0.2 222 | m_CullingMatrixOverride: 223 | e00: 1 224 | e01: 0 225 | e02: 0 226 | e03: 0 227 | e10: 0 228 | e11: 1 229 | e12: 0 230 | e13: 0 231 | e20: 0 232 | e21: 0 233 | e22: 1 234 | e23: 0 235 | e30: 0 236 | e31: 0 237 | e32: 0 238 | e33: 1 239 | m_UseCullingMatrixOverride: 0 240 | m_Cookie: {fileID: 0} 241 | m_DrawHalo: 0 242 | m_Flare: {fileID: 0} 243 | m_RenderMode: 0 244 | m_CullingMask: 245 | serializedVersion: 2 246 | m_Bits: 4294967295 247 | m_RenderingLayerMask: 1 248 | m_Lightmapping: 4 249 | m_LightShadowCasterMode: 0 250 | m_AreaSize: {x: 1, y: 1} 251 | m_BounceIntensity: 1 252 | m_ColorTemperature: 6570 253 | m_UseColorTemperature: 0 254 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 255 | m_UseBoundingSphereOverride: 0 256 | m_UseViewFrustumForShadowCasterCull: 1 257 | m_ShadowRadius: 0 258 | m_ShadowAngle: 0 259 | --- !u!4 &1367843234 260 | Transform: 261 | m_ObjectHideFlags: 0 262 | m_CorrespondingSourceObject: {fileID: 0} 263 | m_PrefabInstance: {fileID: 0} 264 | m_PrefabAsset: {fileID: 0} 265 | m_GameObject: {fileID: 1367843232} 266 | serializedVersion: 2 267 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 268 | m_LocalPosition: {x: 0, y: 3, z: 0} 269 | m_LocalScale: {x: 1, y: 1, z: 1} 270 | m_ConstrainProportionsScale: 0 271 | m_Children: [] 272 | m_Father: {fileID: 0} 273 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 274 | --- !u!1 &1508845095 275 | GameObject: 276 | m_ObjectHideFlags: 0 277 | m_CorrespondingSourceObject: {fileID: 0} 278 | m_PrefabInstance: {fileID: 0} 279 | m_PrefabAsset: {fileID: 0} 280 | serializedVersion: 6 281 | m_Component: 282 | - component: {fileID: 1508845097} 283 | - component: {fileID: 1508845096} 284 | m_Layer: 0 285 | m_Name: AttachmentSender 286 | m_TagString: Untagged 287 | m_Icon: {fileID: 0} 288 | m_NavMeshLayer: 0 289 | m_StaticEditorFlags: 0 290 | m_IsActive: 1 291 | --- !u!114 &1508845096 292 | MonoBehaviour: 293 | m_ObjectHideFlags: 0 294 | m_CorrespondingSourceObject: {fileID: 0} 295 | m_PrefabInstance: {fileID: 0} 296 | m_PrefabAsset: {fileID: 0} 297 | m_GameObject: {fileID: 1508845095} 298 | m_Enabled: 1 299 | m_EditorHideFlags: 0 300 | m_Script: {fileID: 11500000, guid: 3cb52a5a9b5f150428b08d4d81b2fd6a, type: 3} 301 | m_Name: 302 | m_EditorClassIdentifier: 303 | webhookData: {fileID: 11400000, guid: c6d7c6f7ec2d5214a8f471ad3fcf4b08, type: 2} 304 | text: Attachments! Attachments! Attachments! 305 | image1: {fileID: 4900000, guid: 1f075d0f60fda714ca266d7d7c26305e, type: 3} 306 | image2: {fileID: 4900000, guid: 5ad4fa7dd4e586f4e99ab1aeb72947e1, type: 3} 307 | file1: {fileID: 4900000, guid: bc3279ac0108c3d4c9cdf736b68af3e5, type: 3} 308 | --- !u!4 &1508845097 309 | Transform: 310 | m_ObjectHideFlags: 0 311 | m_CorrespondingSourceObject: {fileID: 0} 312 | m_PrefabInstance: {fileID: 0} 313 | m_PrefabAsset: {fileID: 0} 314 | m_GameObject: {fileID: 1508845095} 315 | serializedVersion: 2 316 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 317 | m_LocalPosition: {x: 0, y: 0, z: 0} 318 | m_LocalScale: {x: 1, y: 1, z: 1} 319 | m_ConstrainProportionsScale: 1 320 | m_Children: [] 321 | m_Father: {fileID: 0} 322 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 323 | --- !u!1 &1938878942 324 | GameObject: 325 | m_ObjectHideFlags: 0 326 | m_CorrespondingSourceObject: {fileID: 0} 327 | m_PrefabInstance: {fileID: 0} 328 | m_PrefabAsset: {fileID: 0} 329 | serializedVersion: 6 330 | m_Component: 331 | - component: {fileID: 1938878945} 332 | - component: {fileID: 1938878944} 333 | m_Layer: 0 334 | m_Name: SimpleMessageSender 335 | m_TagString: Untagged 336 | m_Icon: {fileID: 0} 337 | m_NavMeshLayer: 0 338 | m_StaticEditorFlags: 0 339 | m_IsActive: 1 340 | --- !u!114 &1938878944 341 | MonoBehaviour: 342 | m_ObjectHideFlags: 0 343 | m_CorrespondingSourceObject: {fileID: 0} 344 | m_PrefabInstance: {fileID: 0} 345 | m_PrefabAsset: {fileID: 0} 346 | m_GameObject: {fileID: 1938878942} 347 | m_Enabled: 1 348 | m_EditorHideFlags: 0 349 | m_Script: {fileID: 11500000, guid: e2a89789395201a4497f7c612014db39, type: 3} 350 | m_Name: 351 | m_EditorClassIdentifier: 352 | webhookData: {fileID: 11400000, guid: c6d7c6f7ec2d5214a8f471ad3fcf4b08, type: 2} 353 | text: Hello World! 354 | --- !u!4 &1938878945 355 | Transform: 356 | m_ObjectHideFlags: 0 357 | m_CorrespondingSourceObject: {fileID: 0} 358 | m_PrefabInstance: {fileID: 0} 359 | m_PrefabAsset: {fileID: 0} 360 | m_GameObject: {fileID: 1938878942} 361 | serializedVersion: 2 362 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 363 | m_LocalPosition: {x: 0, y: 0, z: 0} 364 | m_LocalScale: {x: 1, y: 1, z: 1} 365 | m_ConstrainProportionsScale: 0 366 | m_Children: [] 367 | m_Father: {fileID: 0} 368 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 369 | --- !u!1 &1985804696 370 | GameObject: 371 | m_ObjectHideFlags: 0 372 | m_CorrespondingSourceObject: {fileID: 0} 373 | m_PrefabInstance: {fileID: 0} 374 | m_PrefabAsset: {fileID: 0} 375 | serializedVersion: 6 376 | m_Component: 377 | - component: {fileID: 1985804698} 378 | - component: {fileID: 1985804697} 379 | m_Layer: 0 380 | m_Name: Main Camera 381 | m_TagString: MainCamera 382 | m_Icon: {fileID: 0} 383 | m_NavMeshLayer: 0 384 | m_StaticEditorFlags: 0 385 | m_IsActive: 1 386 | --- !u!20 &1985804697 387 | Camera: 388 | m_ObjectHideFlags: 0 389 | m_CorrespondingSourceObject: {fileID: 0} 390 | m_PrefabInstance: {fileID: 0} 391 | m_PrefabAsset: {fileID: 0} 392 | m_GameObject: {fileID: 1985804696} 393 | m_Enabled: 1 394 | serializedVersion: 2 395 | m_ClearFlags: 2 396 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 397 | m_projectionMatrixMode: 1 398 | m_GateFitMode: 2 399 | m_FOVAxisMode: 0 400 | m_Iso: 200 401 | m_ShutterSpeed: 0.005 402 | m_Aperture: 16 403 | m_FocusDistance: 10 404 | m_FocalLength: 50 405 | m_BladeCount: 5 406 | m_Curvature: {x: 2, y: 11} 407 | m_BarrelClipping: 0.25 408 | m_Anamorphism: 0 409 | m_SensorSize: {x: 36, y: 24} 410 | m_LensShift: {x: 0, y: 0} 411 | m_NormalizedViewPortRect: 412 | serializedVersion: 2 413 | x: 0 414 | y: 0 415 | width: 1 416 | height: 1 417 | near clip plane: 0.3 418 | far clip plane: 1000 419 | field of view: 60 420 | orthographic: 0 421 | orthographic size: 5 422 | m_Depth: -1 423 | m_CullingMask: 424 | serializedVersion: 2 425 | m_Bits: 4294967295 426 | m_RenderingPath: -1 427 | m_TargetTexture: {fileID: 0} 428 | m_TargetDisplay: 0 429 | m_TargetEye: 3 430 | m_HDR: 1 431 | m_AllowMSAA: 1 432 | m_AllowDynamicResolution: 0 433 | m_ForceIntoRT: 0 434 | m_OcclusionCulling: 1 435 | m_StereoConvergence: 10 436 | m_StereoSeparation: 0.022 437 | --- !u!4 &1985804698 438 | Transform: 439 | m_ObjectHideFlags: 0 440 | m_CorrespondingSourceObject: {fileID: 0} 441 | m_PrefabInstance: {fileID: 0} 442 | m_PrefabAsset: {fileID: 0} 443 | m_GameObject: {fileID: 1985804696} 444 | serializedVersion: 2 445 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 446 | m_LocalPosition: {x: 0, y: 1, z: -10} 447 | m_LocalScale: {x: 1, y: 1, z: 1} 448 | m_ConstrainProportionsScale: 0 449 | m_Children: [] 450 | m_Father: {fileID: 0} 451 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 452 | --- !u!1660057539 &9223372036854775807 453 | SceneRoots: 454 | m_ObjectHideFlags: 0 455 | m_Roots: 456 | - {fileID: 1985804698} 457 | - {fileID: 1367843234} 458 | - {fileID: 1938878945} 459 | - {fileID: 918754685} 460 | - {fileID: 1508845097} 461 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/DiscordUsageSample.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: b428fe2dfa120d6439eff46818e022d9 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ba1d1fd75ba5ef40b4fca40b853262e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/Editor/AttachmentSenderEditor.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | namespace Lumpn.Discord.Samples 9 | { 10 | [CustomEditor(typeof(AttachmentSender))] 11 | public sealed class AttachmentSenderEditor : Editor 12 | { 13 | public override void OnInspectorGUI(AttachmentSender sender) 14 | { 15 | if (GUILayout.Button("Send message to Discord")) 16 | { 17 | sender.StartCoroutine(sender.Run()); 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/Editor/AttachmentSenderEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: a7cb30b74af5b3d48adccb02e52639a6 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/Editor/ComplexMessageSenderEditor.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | namespace Lumpn.Discord.Samples 9 | { 10 | [CustomEditor(typeof(ComplexMessageSender))] 11 | public sealed class ComplexMessageSenderEditor : Editor 12 | { 13 | public override void OnInspectorGUI(ComplexMessageSender sender) 14 | { 15 | if (GUILayout.Button("Send message to Discord")) 16 | { 17 | sender.StartCoroutine(sender.Run()); 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/Editor/ComplexMessageSenderEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8f98b82602f7674499050deabc0ad02f 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/Editor/SimpleMessageSenderEditor.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using UnityEditor; 6 | using UnityEngine; 7 | 8 | namespace Lumpn.Discord.Samples 9 | { 10 | [CustomEditor(typeof(SimpleMessageSender))] 11 | public sealed class SimpleMessageSenderEditor : Editor 12 | { 13 | public override void OnInspectorGUI(SimpleMessageSender sender) 14 | { 15 | if (GUILayout.Button("Send message to Discord")) 16 | { 17 | sender.StartCoroutine(sender.Run()); 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/Editor/SimpleMessageSenderEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ef2a6d2ba6c2af04496d490fd8269d32 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/Example1.png.bytes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lumpn/unity-discord/7860cb35a50cc5a1da8d49f8fdcc2b18652e644c/Samples~/UsageSamples/Example1.png.bytes -------------------------------------------------------------------------------- /Samples~/UsageSamples/Example1.png.bytes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 1f075d0f60fda714ca266d7d7c26305e 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/Example2.png.bytes: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lumpn/unity-discord/7860cb35a50cc5a1da8d49f8fdcc2b18652e644c/Samples~/UsageSamples/Example2.png.bytes -------------------------------------------------------------------------------- /Samples~/UsageSamples/Example2.png.bytes.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5ad4fa7dd4e586f4e99ab1aeb72947e1 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/LogFile.txt: -------------------------------------------------------------------------------- 1 | Lorem ipsum dolor sit amet, 2 | consectetur adipiscing elit, 3 | sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 4 | Ut enim ad minim veniam, 5 | quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 6 | Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 7 | Excepteur sint occaecat cupidatat non proident, 8 | sunt in culpa qui officia deserunt mollit anim id est laborum. -------------------------------------------------------------------------------- /Samples~/UsageSamples/LogFile.txt.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc3279ac0108c3d4c9cdf736b68af3e5 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/SimpleMessageSender.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using System.Collections; 6 | using UnityEngine; 7 | 8 | namespace Lumpn.Discord.Samples 9 | { 10 | public sealed class SimpleMessageSender : MonoBehaviour 11 | { 12 | [Header("Webhook")] 13 | [SerializeField] private WebhookData webhookData; 14 | 15 | [Header("Message")] 16 | [SerializeField] private string text; 17 | 18 | public IEnumerator Run() 19 | { 20 | var webhook = webhookData.CreateWebhook(); 21 | return webhook.Send(text); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/SimpleMessageSender.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e2a89789395201a4497f7c612014db39 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/WebhookData.asset: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &11400000 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: feb0865a39cbf5640832c456fc31fd59, type: 3} 13 | m_Name: WebhookData 14 | m_EditorClassIdentifier: 15 | webhookUrl: 16 | -------------------------------------------------------------------------------- /Samples~/UsageSamples/WebhookData.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c6d7c6f7ec2d5214a8f471ad3fcf4b08 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 11400000 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Tests.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4c0a55955258887439b6b570653a8536 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Tests/Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: eaa641dc4450cb249a3511faccea2430 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Tests/Editor/ColorUtilsTest.cs: -------------------------------------------------------------------------------- 1 | //---------------------------------------- 2 | // MIT License 3 | // Copyright(c) 2021 Jonas Boetel 4 | //---------------------------------------- 5 | using Lumpn.Discord.Utils; 6 | using NUnit.Framework; 7 | using UnityEngine; 8 | 9 | namespace Lumpn.Discord.Tests 10 | { 11 | [TestFixture] 12 | public sealed class ColorUtilsTest 13 | { 14 | [Test] 15 | public void TestColor32() 16 | { 17 | var color = new Color32(100, 100, 100, 0); 18 | var code = ColorUtils.ToColorCode(color); 19 | Assert.AreEqual(6579300, code); 20 | } 21 | 22 | [Test] 23 | public void TestColor() 24 | { 25 | var cyan = ColorUtils.ToColorCode(Color.cyan); 26 | Assert.AreEqual(65535, cyan); 27 | 28 | var gray = ColorUtils.ToColorCode(Color.gray); 29 | Assert.AreEqual(8421504, gray); 30 | 31 | var yellow = ColorUtils.ToColorCode(Color.yellow); 32 | Assert.AreEqual(16771844, yellow); 33 | } 34 | 35 | [Test] 36 | public void TestHTML() 37 | { 38 | var cyan = ColorUtils.ToColorCode("#00FFFF"); 39 | Assert.AreEqual(65535, cyan); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Tests/Editor/ColorUtilsTest.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f2b6c5ab3741ebf4a9fb1ca7e243b3ac 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Tests/Editor/Lumpn.Discord.Editor.Tests.asmdef: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Lumpn.Discord.Editor.Tests", 3 | "rootNamespace": "", 4 | "references": [ 5 | "GUID:fafeaab71f20e104ea642c7be9fb4d4f" 6 | ], 7 | "includePlatforms": [ 8 | "Editor" 9 | ], 10 | "excludePlatforms": [], 11 | "allowUnsafeCode": false, 12 | "overrideReferences": false, 13 | "precompiledReferences": [], 14 | "autoReferenced": true, 15 | "defineConstraints": [], 16 | "versionDefines": [], 17 | "noEngineReferences": false 18 | } -------------------------------------------------------------------------------- /Tests/Editor/Lumpn.Discord.Editor.Tests.asmdef.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: af914a0ef7ab57344abee5ef4872da95 3 | AssemblyDefinitionImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "de.lumpn.unity-discord", 3 | "version": "1.3.0", 4 | "displayName": "Lumpn Discord Webhooks", 5 | "description": "Send messages to your Discord channel via webhooks.", 6 | "dependencies": { 7 | "com.unity.ext.nunit": "1.0.0", 8 | "com.unity.modules.jsonserialize": "1.0.0", 9 | "com.unity.modules.unitywebrequest": "1.0.0" 10 | }, 11 | "keywords": [ 12 | "lumpn", 13 | "discord", 14 | "webhook" 15 | ], 16 | "author": { 17 | "name": "Jonas Boetel", 18 | "url": "https://github.com/lumpn" 19 | }, 20 | "samples": [ 21 | { 22 | "displayName": "Feedback Form Samples", 23 | "path": "Samples~/FeedbackSamples" 24 | }, 25 | { 26 | "displayName": "Webhook Usage Samples", 27 | "path": "Samples~/UsageSamples" 28 | }, 29 | { 30 | "displayName": "Discord API Debugging Samples", 31 | "path": "Samples~/TestingSamples" 32 | } 33 | ] 34 | } -------------------------------------------------------------------------------- /package.json.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ed2cc8bb87c3bc4449def212b4c1f7bf 3 | PackageManifestImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | --------------------------------------------------------------------------------