Fix : Studio UI Merge

This commit is contained in:
2025-05-14 17:00:44 +09:00
parent 7b62435115
commit e703d2fcf5
4493 changed files with 494003 additions and 127 deletions

View File

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

View File

@@ -0,0 +1,13 @@
Best MQTT Bundle is a bundle which includes the following assets. After purchasing this bundle, visit each package listed below, and you will be able to get them for free:
1.) Best HTTP: https://assetstore.unity.com/packages/slug/267636
2.) Best TLS Security: https://assetstore.unity.com/packages/slug/268761
3.) Best WebSockets: https://assetstore.unity.com/packages/slug/268757
4.) Best MQTT: https://assetstore.unity.com/packages/slug/268762
How to get them:
---------------
1.) Navigate to each individual product's store page using the links above.
2.) Add each product to your cart.
3.) The products should show as costing 0$. If they do not, contact me (https://bestdocshub.pages.dev/Shared/support/)!
4.) Check out each product.
5.) Download each product separately like normal.

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: fe791f9505f124e409ce28ec6b94cd38
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 268837
packageName: Best MQTT Bundle
packageVersion: 3.0.0
assetPath: Assets/Best MQTT Bundle/Links.txt
uploadId: 623298

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
using UnityEngine;
using UnityEngine;
using XRLib.UI;
using TMPro;
using UnityEngine.UI;
@@ -40,6 +40,7 @@ namespace XED
Button_AddClassName.onClick.AddListener(AddClassNameItem);
Button_Save.onClick.AddListener(Save);
}
private void SetUrlDropdown()
{
Dropdown_URL.ClearOptions();
@@ -51,6 +52,7 @@ namespace XED
}
Dropdown_URL.AddOptions(options);
Dropdown_URL.onValueChanged.AddListener(OnUrlValueChanged);
OnUrlValueChanged(0);
}
private void OnUrlValueChanged(int index)

View File

@@ -1,4 +1,4 @@
using Newtonsoft.Json;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -71,11 +71,13 @@ namespace XED
Dropdown_DataStorage.AddOptions(displayNames);
Dropdown_DataStorage.onValueChanged.AddListener(OnValueChangedDataStorageDropDown);
}
private void OnValueChangedDataStorageDropDown(int index)
{
loadData = new SaveConnectAlarmData();
AddStorageDataItem(index);
}
private void AddStorageDataItem(int index)
{
foreach(var alarmData in alarmDatas)
@@ -114,6 +116,7 @@ namespace XED
{
gameObject.SetActive(false);
}
private void Save()
{
var saveConnectAlarmData = GetAlarmData();
@@ -159,7 +162,7 @@ namespace XED
loadData = savedData;
SetStorageDataDropdown();
// dropdown¿¡¼­ ¾Ë¸ÂÀº dataStorage index ã±â
// dropdown에서 알맞은 dataStorage index 찾기
for (int i = 0; i < dataList.Count; i++)
{
if(savedData.alarmDataName == dataList[i].name)

View File

@@ -1,4 +1,5 @@
using Newtonsoft.Json;
using Newtonsoft.Json;
using Studio.UVC.UI;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -21,7 +22,7 @@ namespace XED
public Toggle Toggle_Api;
public Toggle Toggle_Storage;
public TMP_Dropdown Dropdown_DataList;
public UVCDropDown Dropdown_DataList;
public Button Button_Cancel;
public Button Button_Save;
@@ -77,6 +78,7 @@ namespace XED
prf_AddOtherDataItem = Resources.Load<UI_AddOtherDataItem>("Prefabs/UI/PRF_AddOtherDataItem");
prf_AddOtherDataTypeItem = Resources.Load<UI_AddOtherDataTypeItem>("Prefabs/UI/PRF_AddOtherDataTypeItem");
Dropdown_DataList = GetComponentInChildren<UVCDropDown>();
Toggle_Api.onValueChanged.AddListener(OnAPIToggleValueChanged);
Toggle_Storage.onValueChanged.AddListener(OnDataStorageToggleValueChanged);
Toggle_limitStorageSetting.onValueChanged.AddListener(OnLimitStorageSettingToggleValueChanged);
@@ -139,9 +141,11 @@ namespace XED
var isActive = isOn;
DataStorageContent.gameObject.SetActive(isActive);
}
private void PopulateDataListDropdown(List<DataClass> data)
{
Dropdown_DataList.ClearOptions();
Dropdown_DataList.Init();
List<string> displayNames = new List<string>();
if (isAPI)
@@ -154,14 +158,14 @@ namespace XED
displayNames.Add(api.name);
}
Dropdown_DataList.AddOptions(displayNames);
Dropdown_DataList.onValueChanged.RemoveAllListeners();
Dropdown_DataList.onValueChanged.AddListener(OnValueChangedAPIDropDown);
Dropdown_DataList.SetOptions(displayNames);
Dropdown_DataList.DropDown.onValueChanged.RemoveAllListeners();
Dropdown_DataList.DropDown.onValueChanged.AddListener(OnValueChangedAPIDropDown);
var notCheckIndex = currentDataListOptionName != null ? displayNames.IndexOf(currentDataListOptionName) : 0;
var index = notCheckIndex >= 0 ? notCheckIndex : 0;
Dropdown_DataList.SetValueWithoutNotify(index);
Dropdown_DataList.DropDown.SetValueWithoutNotify(index);
SetLoadApiData(index);
}
else
@@ -174,14 +178,14 @@ namespace XED
displayNames.Add(storageData.name);
}
Dropdown_DataList.AddOptions(displayNames);
Dropdown_DataList.onValueChanged.RemoveAllListeners();
Dropdown_DataList.onValueChanged.AddListener(OnValueChangedDataStorageDropDown);
Dropdown_DataList.SetOptions(displayNames);
Dropdown_DataList.DropDown.onValueChanged.RemoveAllListeners();
Dropdown_DataList.DropDown.onValueChanged.AddListener(OnValueChangedDataStorageDropDown);
var notCheckIndex = currentDataListOptionName != null ? displayNames.IndexOf(currentDataListOptionName) : 0;
var index = notCheckIndex >= 0 ? notCheckIndex : 0;
Dropdown_DataList.SetValueWithoutNotify(index);
Dropdown_DataList.DropDown.SetValueWithoutNotify(index);
OnValueChangedDataStorageDropDown(index);
}
}
@@ -306,7 +310,7 @@ namespace XED
saveData.otherDataClasses.Clear();
saveData.isAPI = isAPI;
saveData.dataListOptionName = Dropdown_DataList.options[Dropdown_DataList.value].text;
saveData.dataListOptionName = Dropdown_DataList.GetSelectOptionName();
saveData.isLimitStorageSetting = Toggle_limitStorageSetting.isOn;

View File

@@ -1,10 +1,10 @@
using UnityEngine;
using XRLib.UI;
using TMPro;
using UnityEngine.UI;
using Newtonsoft.Json;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using XRLib.UI;
namespace XED
{
@@ -30,18 +30,38 @@ namespace XED
var mqttJson = Resources.Load<TextAsset>("MQTTData").text;
loadMQTTData = JsonConvert.DeserializeObject<MQTTData>(mqttJson);
}
public override void AfterAwake()
{
TestDataConnected();
prf_mqttTopicItem = Resources.Load<UI_DataBindingItem>("Prefabs/UI/PRF_DataBindingItemItem");
Text_Domain.SetText(loadMQTTData.domain);
Text_Port.SetText(loadMQTTData.port);
SetURLText();
Button_AddTopic.onClick.AddListener(AddTopicItem);
Button_Save.onClick.AddListener(Save);
}
//app_config
/// <summary>
/// 설정한 데이터값 가져와 적용
/// </summary>
private void ConnectedData()
{
//string path = Path.Combine(Application.streamingAssetsPath, "app_config.json");
//string json = System.IO.File.ReadAllText(path);
//loadMQTTData = JsonUtility.FromJson<MQTTData>(json);
SetURLText();
}
/// <summary>
/// 도메인 PORT 설정
/// </summary>
private void SetURLText()
{
Text_Domain.SetText(loadMQTTData.domain);
Text_Port.SetText(loadMQTTData.port);
}
private void OnClickFilterButton(UI_DataBindingItem item)
{
selectedTopicItem = item;
@@ -49,6 +69,9 @@ namespace XED
onClickFilterButton?.Invoke(itemName);
}
/// <summary>
/// 토픽 아이템 추가
/// </summary>
private void AddTopicItem()
{
var item = Instantiate(prf_mqttTopicItem, TopicContent);
@@ -56,16 +79,29 @@ namespace XED
item.onFilter += OnClickFilterButton;
topicItems.Add(item);
}
/// <summary>
/// TopicItem 제거
/// </summary>
/// <param name="item"></param>
private void RemoveTopicItem(UI_DataBindingItem item)
{
topicItems.Remove(item);
Destroy(item.gameObject);
}
/// <summary>
/// MQTT 데이터 추가
/// </summary>
private void Save()
{
var saveData = GetMQTTData();
onSaveMQTTData?.Invoke(saveData);
}
/// <summary>
///
/// </summary>
/// <param name="filterData"></param>
public void SetFilterData(SaveFilterData filterData)
{
if (selectedTopicItem == null)
@@ -75,6 +111,10 @@ namespace XED
selectedTopicItem.SetChangedInputFieldTopicName();
}
/// <summary>
/// MQTTData 가져오기
/// </summary>
/// <returns></returns>
private SaveMQTTData GetMQTTData()
{
SaveMQTTData saveMQTTData = new SaveMQTTData();

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
@@ -8,6 +8,7 @@ using UnityEngine.UI;
using Newtonsoft.Json;
using TriLibCore.SFB;
using System.Text;
using Studio.UVC.UI;
namespace XED
{
@@ -19,7 +20,7 @@ namespace XED
}
public class Panel_MultilingualSettingModal : PanelBase
{
public TMP_Dropdown Dropdown_Languages;
public UVCDropDown Dropdown_Languages;
public Button Button_OpenFile;
public Button Button_Save;
@@ -30,6 +31,8 @@ namespace XED
public override void AfterAwake()
{
Dropdown_Languages = GetComponentInChildren<UVCDropDown>();
Dropdown_Languages.Init();
Button_OpenFile.onClick.AddListener(OnClickOpenFileButton);
Button_Save.onClick.AddListener(OnClickSaveButton);
}
@@ -47,6 +50,12 @@ namespace XED
if (items != null && items.Count > 0)
{
var item = items[0];
if(string.IsNullOrEmpty(item.Name))
{
//TODO 팝업창 or 그냥 닫음
Debug.Log("취소");
return;
}
using (var reader = new StreamReader(item.OpenStream(), Encoding.UTF8))
{
json = reader.ReadToEnd();
@@ -54,13 +63,13 @@ namespace XED
}
else
{
Debug.LogWarning("파일을 선택하지 않았습니다.");
Debug.LogWarning("파일을 선택하지 않았습니다.");
}
var data = JsonConvert.DeserializeObject<LanguageConfig>(json);
if (data == null || data.languages == null)
{
Debug.LogError("데이터가 존재하지 않습니다.");
Debug.LogError("데이터가 존재하지 않습니다.");
return;
}
@@ -69,23 +78,23 @@ namespace XED
}
private void SetLanguageDropdown()
{
Dropdown_Languages.ClearOptions();
//Dropdown_Languages.ClearOptions();
List<string> options = new List<string>();
foreach (var language in languages.Keys)
{
options.Add(language);
}
Dropdown_Languages.AddOptions(options);
Dropdown_Languages.onValueChanged.AddListener(OnLanguageDropdownValueChanged);
Dropdown_Languages.SetOptions(options);
Dropdown_Languages.OnValueChange+=OnLanguageDropdownValueChanged;
var languageKey = Dropdown_Languages.options[0].text;
var languageKey = Dropdown_Languages.GetSelectOptionName();
selectedLanguage = languages[languageKey];
}
private void OnLanguageDropdownValueChanged(int index)
{
var languageKey = Dropdown_Languages.options[index].text;
var languageKey = Dropdown_Languages.GetSelectOptionName();
selectedLanguage = languages[languageKey];
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,8 @@
namespace XED.Manage
namespace XED.Manage
{
public class StudioPopupCanvasHandler : CanvasEventHandler
{
public StudioPopupCanvasHandler(StudioCanvas_Popup canvas_popup)
public StudioPopupCanvasHandler(Canvas_Studio_Popup canvas_popup)
{
canvas_popup.panel_selectlogic.onClickAppSetting += canvas_popup.panel_applogiclist.OnSelectLogic;
canvas_popup.panel_selectlogic.onClickAuthentication += canvas_popup.panel_applogiclist.OnSelectLogic;
@@ -29,6 +29,9 @@ namespace XED.Manage
canvas_popup.panel_openprojectinfo.onClickOpen += canvas_popup.panel_inspector.Open;
canvas_popup.panel_openprojectinfo.onClickOpen += canvas_popup.panel_quickstart.Close;
canvas_popup.panel_openprojectinfo.onClickOpen += canvas_popup.panel_openprojectinfo.Close;
canvas_popup.panel_datafiltersetting.onSaveFilterData += canvas_popup.panel_mqttconnectmodal.SetFilterData;
canvas_popup.panel_datafiltersetting.onSaveFilterData += canvas_popup.panel_apiconnectmodal.SetFilterData;
}
}
}

View File

@@ -0,0 +1,41 @@
using UnityEngine;
using XED.Manage;
using XED.UI;
using XRLib.UI;
namespace XED
{
public class Canvas_Studio_Popup : CanvasBase
{
public Panel_StartImage panel_startimage;
public Panel_AppLogicList panel_applogiclist;
public Panel_Inspector panel_inspector;
public Panel_SelectLogic panel_selectlogic;
public Panel_AppSetting panel_appsetting;
public Panel_Authentication panel_authentication;
public Panel_QuickStart panel_quickstart;
public Panel_NewProjectInfo panel_newprojectinfo;
public Panel_OpenProjectInfo panel_openprojectinfo;
public Panel_APIConnectModal panel_apiconnectmodal;
public Panel_MQTTConnectModal panel_mqttconnectmodal;
public Panel_DataFilterSetting panel_datafiltersetting;
public Panel_MultilingualSettingModal panel_multilingualsettingmodal;
public Panel_LoggingModal panel_loggingmodal;
private void Awake()
{
var dataManager = FindAnyObjectByType<ConnectDataManager>();
canvasHandler = new StudioPopupCanvasHandler(this);
panel_apiconnectmodal.onClickFilterButton += dataManager.SetFilterData;
panel_apiconnectmodal.onSaveAPIData += dataManager.SetAPIData;
panel_mqttconnectmodal.onClickFilterButton += dataManager.SetFilterData;
panel_mqttconnectmodal.onSaveMQTTData += dataManager.SetMQTTData;
dataManager.mqttData += panel_datafiltersetting.SetLoadMQTTDataList;
dataManager.apiData += panel_datafiltersetting.SetLoadAPIDataList;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 5c8f7b3147f30b34abbe0f3043aa96b2

View File

@@ -1,25 +0,0 @@
using UnityEngine;
using XED.Manage;
using XED.UI;
using XRLib.UI;
namespace XED
{
public class StudioCanvas_Popup : CanvasBase
{
public Panel_StartImage panel_startimage;
public Panel_AppLogicList panel_applogiclist;
public Panel_Inspector panel_inspector;
public Panel_SelectLogic panel_selectlogic;
public Panel_AppSetting panel_appsetting;
public Panel_Authentication panel_authentication;
public Panel_QuickStart panel_quickstart;
public Panel_NewProjectInfo panel_newprojectinfo;
public Panel_OpenProjectInfo panel_openprojectinfo;
private void Awake()
{
canvasHandler = new StudioPopupCanvasHandler(this);
}
}
}

View File

@@ -1,2 +0,0 @@
fileFormatVersion: 2
guid: 962441d825727c54b92657b0c4e5fc72

View File

@@ -1,30 +1,25 @@
using NUnit.Framework;
using Ookii.Dialogs;
using System.Collections.Generic;
using System.Reflection;
using UnityEditor.UIElements;
using System.Collections.Generic;
using UnityEngine;
using XED.Manage;
using XRLib.UI;
using static UnityEngine.Rendering.DebugUI;
namespace XED.UI
{
public class Panel_AppLogicList : PanelBase
{
StudioCanvas_Popup studioCanvas_popup;
Canvas_Studio_Popup studioCanvas_popup;
private List<UI_LogicItem> itemList = new();
public GameObject logicItem;
public RectTransform itemRoot;
public UI_LogicItem selectItem;
public GameObject curInspectorPanel;
public PanelBase curInspectorPanel;
public override void AfterAwake()
{
logicItem = Resources.Load<GameObject>("Prefabs/UI/PRF_LogicItem");
studioCanvas_popup = EventConnector.instance.GetCanvas<StudioCanvas_Popup>();
studioCanvas_popup = EventConnector.instance.GetCanvas<Canvas_Studio_Popup>();
CreateItem();
}
@@ -38,7 +33,7 @@ namespace XED.UI
}
private void OnClickAdd(UI_LogicItem item)
{
{
selectItem = item;
studioCanvas_popup.panel_selectlogic.Open(true);
}
@@ -50,22 +45,27 @@ namespace XED.UI
curInspectorPanel.gameObject.SetActive(false);
curInspectorPanel = null;
}
var size = studioCanvas_popup.panel_inspector.rectTransform.sizeDelta;
var parent = studioCanvas_popup.panel_inspector.transform;
switch (logic)
{
case ELogic.AppSetting:
curInspectorPanel = studioCanvas_popup.panel_appsetting.gameObject;
curInspectorPanel = studioCanvas_popup.panel_appsetting;
break;
case ELogic.Authentication:
curInspectorPanel = studioCanvas_popup.panel_authentication.gameObject;
curInspectorPanel = studioCanvas_popup.panel_authentication;
break;
case ELogic.Language:
curInspectorPanel = studioCanvas_popup.panel_multilingualsettingmodal;
break;
case ELogic.Logging:
curInspectorPanel = studioCanvas_popup.panel_loggingmodal;
break;
case ELogic.APIConnection:
curInspectorPanel = studioCanvas_popup.panel_apiconnectmodal;
break;
case ELogic.MQTTConnection:
curInspectorPanel = studioCanvas_popup.panel_mqttconnectmodal;
break;
case ELogic.Create3DObject:
break;
@@ -76,27 +76,36 @@ namespace XED.UI
}
if (curInspectorPanel != null)
curInspectorPanel.gameObject.SetActive(true);
{
SetModal(size, parent);
}
}
public void SetModal(Vector2 size, Transform parent)
{
curInspectorPanel.transform.SetParent(parent);
curInspectorPanel.transform.localPosition = Vector3.zero;
curInspectorPanel.rectTransform.sizeDelta = size;
curInspectorPanel.gameObject.SetActive(true);
}
private void OnClickRemove(UI_LogicItem item)
{
itemList.Remove(item);
Destroy(item.gameObject);
Destroy(item.gameObject);
if(selectItem == item)
if (selectItem == item)
{
selectItem = null;
if (curInspectorPanel != null)
curInspectorPanel.gameObject.SetActive(false);
}
}
if (itemList.Count == 0)
CreateItem();
}
public void OnSelectLogic(ELogic logic)
{
{
selectItem.OnSelectLogic(logic);
CreateItem();
studioCanvas_popup.panel_selectlogic.Open(false);

View File

@@ -1,4 +1,4 @@
using UnityEngine;
using UnityEngine;
using XRLib.UI;
namespace XED.UI

View File

@@ -0,0 +1,18 @@
using UnityEngine;
using XRLib.UI;
namespace XED
{
public class Panel_LoggingModal : PanelBase
{
public void Open()
{
SetActive(true);
}
public void Close()
{
SetActive(false);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 887127ae2ff06194285151b68c80d0df

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 59a7b055088d4b043a9cb6ba53b959e7
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,227 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2853096734297698429
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6839852970514249078}
- component: {fileID: 8753388075770554521}
- component: {fileID: 7778645077992593713}
- component: {fileID: 7532054323562963817}
m_Layer: 5
m_Name: UVCImageButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6839852970514249078
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2853096734297698429}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7325995168660320061}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 50, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8753388075770554521
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2853096734297698429}
m_CullTransparentMesh: 1
--- !u!114 &7778645077992593713
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2853096734297698429}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 33c5532bf6e8bc845ab3fd664ab3c004, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &7532054323562963817
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2853096734297698429}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d228e8ca7946fa546b95de748b8ff416, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &4686938401149116389
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7325995168660320061}
- component: {fileID: 2153917058625337865}
- component: {fileID: 2260212017536480779}
m_Layer: 5
m_Name: Text (TMP)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7325995168660320061
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4686938401149116389}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6839852970514249078}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2153917058625337865
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4686938401149116389}
m_CullTransparentMesh: 1
--- !u!114 &2260212017536480779
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4686938401149116389}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Btn
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_sharedMaterial: {fileID: 6975767319296004534, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 10
m_fontSizeBase: 10
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e85fd28ee9664084ca248c710b4200d9
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,388 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1089977822156698080
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5022841697432787575}
- component: {fileID: 7972628233262231590}
- component: {fileID: 5274701475660966328}
m_Layer: 5
m_Name: UVCRadioButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5022841697432787575
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1089977822156698080}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6597113983133026070}
- {fileID: 2048927090574460687}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 160, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &7972628233262231590
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1089977822156698080}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 3998130256436250375}
toggleTransition: 1
graphic: {fileID: 8993377373409066721}
m_Group: {fileID: 0}
onValueChanged:
m_PersistentCalls:
m_Calls: []
m_IsOn: 1
--- !u!114 &5274701475660966328
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1089977822156698080}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 17092b09dad0ea7419dfd6410d22812d, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &4106650688606622162
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2048927090574460687}
- component: {fileID: 1909211878785236170}
- component: {fileID: 9041163211297865558}
m_Layer: 5
m_Name: Label
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2048927090574460687
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4106650688606622162}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5022841697432787575}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 9, y: -0.5}
m_SizeDelta: {x: -28, y: -3}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1909211878785236170
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4106650688606622162}
m_CullTransparentMesh: 1
--- !u!114 &9041163211297865558
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4106650688606622162}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text:
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_sharedMaterial: {fileID: 6975767319296004534, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 15
m_fontSizeBase: 15
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &6336208487114930412
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 4022916176769784560}
- component: {fileID: 8009037934821428993}
- component: {fileID: 8993377373409066721}
m_Layer: 5
m_Name: Checkmark
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &4022916176769784560
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6336208487114930412}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6597113983133026070}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8009037934821428993
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6336208487114930412}
m_CullTransparentMesh: 1
--- !u!114 &8993377373409066721
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6336208487114930412}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 43a6855cf69a71d41a552137f05dee6f, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &7228364074619456312
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6597113983133026070}
- component: {fileID: 1524698553141097047}
- component: {fileID: 3998130256436250375}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6597113983133026070
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7228364074619456312}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 4022916176769784560}
m_Father: {fileID: 5022841697432787575}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 10, y: -10}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1524698553141097047
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7228364074619456312}
m_CullTransparentMesh: 1
--- !u!114 &3998130256436250375
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7228364074619456312}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 2618f2d97f270204bacfca39dfe7fbb8, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8cf1caba24f0b3642a9f9b3c886e7d97
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,500 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1418468527113902467
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3668974412533355684}
- component: {fileID: 7856316314867096626}
- component: {fileID: 3659942844975833385}
m_Layer: 5
m_Name: Handle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3668974412533355684
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1418468527113902467}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8767415226624267104}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 1, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7856316314867096626
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1418468527113902467}
m_CullTransparentMesh: 1
--- !u!114 &3659942844975833385
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1418468527113902467}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 45353c1f862bf56499821bebd0cfa3ee, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 25
--- !u!1 &1864963411179644814
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8281250687382000572}
- component: {fileID: 6474645013934311732}
- component: {fileID: 1439665835867081027}
- component: {fileID: 4301519188176582658}
- component: {fileID: 231277771012865372}
m_Layer: 5
m_Name: UVCScrollView
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8281250687382000572
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1864963411179644814}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 6663685262496820286}
- {fileID: 173013935933673233}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 200, y: 200}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6474645013934311732
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1864963411179644814}
m_CullTransparentMesh: 1
--- !u!114 &1439665835867081027
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1864963411179644814}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0.392}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &4301519188176582658
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1864963411179644814}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Content: {fileID: 5719451168689805125}
m_Horizontal: 0
m_Vertical: 1
m_MovementType: 2
m_Elasticity: 0.1
m_Inertia: 1
m_DecelerationRate: 0.135
m_ScrollSensitivity: 1
m_Viewport: {fileID: 6663685262496820286}
m_HorizontalScrollbar: {fileID: 0}
m_VerticalScrollbar: {fileID: 6366829184741825372}
m_HorizontalScrollbarVisibility: 2
m_VerticalScrollbarVisibility: 2
m_HorizontalScrollbarSpacing: -3
m_VerticalScrollbarSpacing: -3
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
--- !u!114 &231277771012865372
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1864963411179644814}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 663b0bae46f9f1c4692c00ea482744f8, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &2655245092928527348
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5719451168689805125}
- component: {fileID: 2152467666601079940}
m_Layer: 5
m_Name: Content
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5719451168689805125
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2655245092928527348}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6663685262496820286}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!114 &2152467666601079940
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2655245092928527348}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
m_Name:
m_EditorClassIdentifier:
m_HorizontalFit: 0
m_VerticalFit: 2
--- !u!1 &3690881797196394413
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8767415226624267104}
m_Layer: 5
m_Name: Sliding Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8767415226624267104
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3690881797196394413}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3668974412533355684}
m_Father: {fileID: 173013935933673233}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &7076309334072665908
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6663685262496820286}
- component: {fileID: 331252045699405659}
- component: {fileID: 1021284540039825415}
- component: {fileID: 993387894104036843}
m_Layer: 5
m_Name: Viewport
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6663685262496820286
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7076309334072665908}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 5719451168689805125}
m_Father: {fileID: 8281250687382000572}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!222 &331252045699405659
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7076309334072665908}
m_CullTransparentMesh: 1
--- !u!114 &1021284540039825415
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7076309334072665908}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 10917, guid: 0000000000000000f000000000000000, type: 0}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &993387894104036843
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7076309334072665908}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_ShowMaskGraphic: 0
--- !u!1 &8207062515946744844
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 173013935933673233}
- component: {fileID: 5441967613687056454}
- component: {fileID: 825504674663522840}
- component: {fileID: 6366829184741825372}
m_Layer: 5
m_Name: Scrollbar Vertical
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &173013935933673233
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8207062515946744844}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8767415226624267104}
m_Father: {fileID: 8281250687382000572}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -4, y: 4}
m_SizeDelta: {x: 1, y: -8}
m_Pivot: {x: 1, y: 0}
--- !u!222 &5441967613687056454
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8207062515946744844}
m_CullTransparentMesh: 1
--- !u!114 &825504674663522840
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8207062515946744844}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.20754719, g: 0.20754719, b: 0.20754719, a: 0.31764707}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: f995acd2e3363da4693858d6b2b3e033, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 7
--- !u!114 &6366829184741825372
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8207062515946744844}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 1
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 3659942844975833385}
m_HandleRect: {fileID: 3668974412533355684}
m_Direction: 3
m_Value: 0
m_Size: 1
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 83576c841110efe4bb467a20bacad33e
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,815 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &483352281009434215
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8881705084527983706}
- component: {fileID: 7176967542688799975}
- component: {fileID: 5138511089698655698}
m_Layer: 5
m_Name: Text_Value
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8881705084527983706
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 483352281009434215}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5511339194818633497}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0, y: 1}
--- !u!222 &7176967542688799975
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 483352281009434215}
m_CullTransparentMesh: 1
--- !u!114 &5138511089698655698
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 483352281009434215}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 5
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_sharedMaterial: {fileID: 6975767319296004534, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294937380
m_fontColor: {r: 0.14117648, g: 0.54509807, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 14
m_fontSizeBase: 14
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &3083934565711268063
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3825429722504808035}
- component: {fileID: 4876224511263141569}
- component: {fileID: 1058910124902638414}
m_Layer: 5
m_Name: Image_Icon
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &3825429722504808035
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3083934565711268063}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5511339194818633497}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 60, y: 60}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4876224511263141569
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3083934565711268063}
m_CullTransparentMesh: 1
--- !u!114 &1058910124902638414
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3083934565711268063}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 8ff2996fb3c997940b1fb4a46cc5547d, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &4215073789238606568
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7499783587181514192}
- component: {fileID: 1435374586936567355}
- component: {fileID: 4145961510090935338}
m_Layer: 5
m_Name: Fill
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7499783587181514192
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4215073789238606568}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6713198440308569480}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 10, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &1435374586936567355
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4215073789238606568}
m_CullTransparentMesh: 1
--- !u!114 &4145961510090935338
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4215073789238606568}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: e8eec744ee7813c4796cb9e86515d6c6, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &4433350498458361535
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7765013687415539520}
m_Layer: 5
m_Name: Handle Slide Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &7765013687415539520
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4433350498458361535}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8222284260679629820}
m_Father: {fileID: 2673660733111271902}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -0.5, y: 2}
m_SizeDelta: {x: -9, y: -4}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &5940305654693879010
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2673660733111271902}
- component: {fileID: 3748619588315430153}
m_Layer: 5
m_Name: ValueSlider
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2673660733111271902
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5940305654693879010}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 1242565570153478422}
- {fileID: 6713198440308569480}
- {fileID: 7765013687415539520}
m_Father: {fileID: 5511339194818633497}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 501, y: 28}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &3748619588315430153
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5940305654693879010}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 0
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 4295433895914141962}
m_FillRect: {fileID: 7499783587181514192}
m_HandleRect: {fileID: 8222284260679629820}
m_Direction: 0
m_MinValue: 0
m_MaxValue: 4
m_WholeNumbers: 1
m_Value: 0
m_OnValueChanged:
m_PersistentCalls:
m_Calls: []
--- !u!1 &6673703496133566578
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8222284260679629820}
- component: {fileID: 772577371050053459}
- component: {fileID: 4295433895914141962}
m_Layer: 5
m_Name: Handle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8222284260679629820
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6673703496133566578}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 7765013687415539520}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 13, y: -7}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &772577371050053459
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6673703496133566578}
m_CullTransparentMesh: 1
--- !u!114 &4295433895914141962
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6673703496133566578}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 0b1550195dcb8ff4d8fa08f12fef15c8, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &6836110774183448062
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1625340058823357829}
- component: {fileID: 8737619020604900046}
- component: {fileID: 3090115838061919982}
m_Layer: 5
m_Name: Text_Title
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1625340058823357829
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6836110774183448062}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 5511339194818633497}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 156, y: 32}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8737619020604900046
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6836110774183448062}
m_CullTransparentMesh: 1
--- !u!114 &3090115838061919982
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6836110774183448062}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Title_Name
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_sharedMaterial: {fileID: 6975767319296004534, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 14
m_fontSizeBase: 14
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &7534796672450848639
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6713198440308569480}
m_Layer: 5
m_Name: Fill Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6713198440308569480
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7534796672450848639}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7499783587181514192}
m_Father: {fileID: 2673660733111271902}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -5, y: 0}
m_SizeDelta: {x: -20, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &9004767511023763174
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1242565570153478422}
- component: {fileID: 4427891387700540679}
- component: {fileID: 3597273997780759238}
m_Layer: 5
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1242565570153478422
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9004767511023763174}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 2673660733111271902}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4427891387700540679
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9004767511023763174}
m_CullTransparentMesh: 1
--- !u!114 &3597273997780759238
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9004767511023763174}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 3b738ded34512ab48a5e558a979bf570, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &9056692331951446274
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 5511339194818633497}
- component: {fileID: 1397352284942832852}
- component: {fileID: 7777990900192151255}
m_Layer: 5
m_Name: UVCSlider
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &5511339194818633497
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9056692331951446274}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 3825429722504808035}
- {fileID: 1625340058823357829}
- {fileID: 2673660733111271902}
- {fileID: 8881705084527983706}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1397352284942832852
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9056692331951446274}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Padding:
m_Left: 0
m_Right: 0
m_Top: 0
m_Bottom: 0
m_ChildAlignment: 3
m_Spacing: 4
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 0
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!114 &7777990900192151255
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9056692331951446274}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b3865e66319ab554cbb3bb19044d5f72, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 637022c95000cec4db783754632077b2
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,277 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &2811720845175508435
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 9172929782572919720}
- component: {fileID: 8736496093249785801}
- component: {fileID: 3652504184146080161}
m_Layer: 5
m_Name: Image_background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &9172929782572919720
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2811720845175508435}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 953276898610861037}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &8736496093249785801
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2811720845175508435}
m_CullTransparentMesh: 1
--- !u!114 &3652504184146080161
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2811720845175508435}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.27429688, g: 0.8679245, b: 0.29990438, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: ea9f00cd65a822d4f9daecde0b798469, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 4
--- !u!1 &3401810747447310705
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6510746003936204973}
- component: {fileID: 4690590794083811930}
- component: {fileID: 4090580205630988931}
- component: {fileID: 3630249145513062361}
- component: {fileID: 3560587852731672157}
m_Layer: 5
m_Name: Button_switch
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6510746003936204973
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3401810747447310705}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 953276898610861037}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 2, y: 0}
m_SizeDelta: {x: 27, y: 27}
m_Pivot: {x: 0, y: 0.5}
--- !u!222 &4690590794083811930
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3401810747447310705}
m_CullTransparentMesh: 1
--- !u!114 &4090580205630988931
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3401810747447310705}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 1e9bb2a491695a941a43dea94f3d32b7, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &3630249145513062361
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3401810747447310705}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 0
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 4090580205630988931}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &3560587852731672157
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3401810747447310705}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
m_Name:
m_EditorClassIdentifier:
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.2784314}
m_EffectDistance: {x: 1, y: -1}
m_UseGraphicAlpha: 1
--- !u!1 &7578838943388945266
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 953276898610861037}
- component: {fileID: 6946932034249908548}
- component: {fileID: 3215420024917430079}
m_Layer: 5
m_Name: UVCSwitchButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &953276898610861037
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7578838943388945266}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 9172929782572919720}
- {fileID: 6510746003936204973}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 51, y: 31}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6946932034249908548
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7578838943388945266}
m_CullTransparentMesh: 1
--- !u!114 &3215420024917430079
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7578838943388945266}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 934fce4b892f1d549b12df3a199d99f8, type: 3}
m_Name:
m_EditorClassIdentifier:
space: 2
speed_MoveTo: 1
duration_MoveTo: 10
normalBG: {r: 0.28235295, g: 0.28235295, b: 0.28235295, a: 0.3529412}
SelectBG: {r: 0.27450982, g: 0.87058824, b: 0.3019608, a: 1}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8e4bd0a1692ee264ca3531f7f59f1cf1
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,282 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1103117457639292196
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2955246670373270637}
- component: {fileID: 2054444802996249088}
- component: {fileID: 7288995949574559143}
m_Layer: 5
m_Name: Text_Name
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &2955246670373270637
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1103117457639292196}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6979262846185234204}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2054444802996249088
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1103117457639292196}
m_CullTransparentMesh: 1
--- !u!114 &7288995949574559143
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1103117457639292196}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: Button
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_sharedMaterial: {fileID: 6975767319296004534, guid: 4f170a218dfffe4489dc7ddd54bc15cf, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4294967295
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 24
m_fontSizeBase: 24
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 2
m_VerticalAlignment: 512
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!1 &2940723019932460568
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6979262846185234204}
- component: {fileID: 6956058148239678376}
- component: {fileID: 5241126291345577379}
- component: {fileID: 4981626796543352058}
- component: {fileID: 5969921100306668649}
m_Layer: 5
m_Name: UVCTabButton
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6979262846185234204
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2940723019932460568}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2955246670373270637}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 180, y: 32}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6956058148239678376
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2940723019932460568}
m_CullTransparentMesh: 1
--- !u!114 &5241126291345577379
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2940723019932460568}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: e4fc3befe92ee044f98721b777e4188a, type: 3}
m_Type: 1
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 2.5
--- !u!114 &4981626796543352058
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2940723019932460568}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Navigation:
m_Mode: 3
m_WrapAround: 0
m_SelectOnUp: {fileID: 0}
m_SelectOnDown: {fileID: 0}
m_SelectOnLeft: {fileID: 0}
m_SelectOnRight: {fileID: 0}
m_Transition: 0
m_Colors:
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
m_ColorMultiplier: 1
m_FadeDuration: 0.1
m_SpriteState:
m_HighlightedSprite: {fileID: 0}
m_PressedSprite: {fileID: 0}
m_SelectedSprite: {fileID: 0}
m_DisabledSprite: {fileID: 0}
m_AnimationTriggers:
m_NormalTrigger: Normal
m_HighlightedTrigger: Highlighted
m_PressedTrigger: Pressed
m_SelectedTrigger: Selected
m_DisabledTrigger: Disabled
m_Interactable: 1
m_TargetGraphic: {fileID: 5241126291345577379}
m_OnClick:
m_PersistentCalls:
m_Calls: []
--- !u!114 &5969921100306668649
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2940723019932460568}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 63abeabf96bb6b64b895ab577888d1fd, type: 3}
m_Name:
m_EditorClassIdentifier:
onClick:
m_PersistentCalls:
m_Calls: []
selected: 0
Space: 8
normalColor: {r: 1, g: 1, b: 1, a: 1}
HighLightColor: {r: 0, g: 0.48235294, b: 0.8962264, a: 0.6156863}
selectColor: {r: 0, g: 0.8235294, b: 0.8980392, a: 1}
normalSprite: {fileID: 21300000, guid: e4fc3befe92ee044f98721b777e4188a, type: 3}
selectSprite: {fileID: 21300000, guid: 5531666309b973c4daec6f70f538f537, type: 3}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 6a21bfa2d7314d24ea23697213413d29
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

8
Assets/Scripts/UVC.meta Normal file
View File

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

View File

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

View File

@@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Studio.UVC.UI
{
public interface ITabButton
{
int Index { get; set; }
void Select();
void Deselect();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 8a694b88bd170754da56bc46b2a2ec59

View File

@@ -0,0 +1,9 @@
namespace Studio.UVC.UI
{
public interface ITabContent
{
int Index { get; set; }
void Show();
void Hide();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 11447fe7eb9002c418d16138621ba2ca

View File

@@ -0,0 +1,59 @@
using Studio.UVC.UI;
using System.Collections.Generic;
namespace Studio.UVC.Controller.UI
{
public class TabController
{
public int SelectedIndex { get; private set; } = -1;
private List<ITabButton> tabButtons = new List<ITabButton>();
private List<ITabContent> tabContents = new List<ITabContent>();
public List<ITabButton> TabButtons => tabButtons;
public List<ITabContent> TabContents => tabContents;
public void Add(ITabButton tabButton, ITabContent tabContent)
{
tabButton.Index = tabButtons.Count;
tabContent.Index = tabContents.Count;
tabButtons.Add(tabButton);
tabContents.Add(tabContent);
tabButton.Deselect();
tabContent.Hide();
}
public void Select(int index)
{
if (SelectedIndex == index)
return;
if (SelectedIndex != -1)
{
tabButtons[SelectedIndex].Deselect();
tabContents[SelectedIndex].Hide();
}
SelectedIndex = index;
tabButtons[SelectedIndex].Select();
tabContents[SelectedIndex].Show();
}
public void Clear()
{
tabButtons.Clear();
tabContents.Clear();
}
public void Deselect()
{
if (SelectedIndex == -1)
return;
tabButtons[SelectedIndex].Deselect();
tabContents[SelectedIndex].Hide();
SelectedIndex = -1;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 301730ca80e97ce41a9525162920a815

View File

@@ -0,0 +1,132 @@
using System;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace Studio.UVC.UI
{
[RequireComponent(typeof(RectTransform))]
public class UVCButton : UnityEngine.MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
{
private static GameObject prefab;
public static UVCButton Create(string text, Transform parent = null)
{
if (prefab == null) prefab = Resources.Load("Prefabs/Common/UVCButton", typeof(GameObject)) as GameObject;
var instance = Instantiate(prefab, parent);
var btn = instance.GetComponent<UVCButton>();
if (text != null && text.Length > 0) btn.GetComponentInChildren<TextMeshProUGUI>().text = text;
return btn;
}
[SerializeField]
private bool selected = false;
public bool Selected { get => selected; }
public int Index { get; set; }
private TextMeshProUGUI txt;
private UnityEngine.UI.Button button;
private RectTransform rect;
public RectTransform Rect { get { return rect; } }
private Image image;
public Image Image { get { return image; } }
public float Space = 8f;
[Header("Color")]
public Color normalColor;
public Color HighLightColor;
public Color selectColor;
[Header("Sprite")]
public Sprite normalSprite;
public Sprite selectSprite;
public UnityEvent onClickButton;
public void Init()
{
txt = GetComponentInChildren<TextMeshProUGUI>();
button = GetComponent<UnityEngine.UI.Button>();
rect = GetComponent<RectTransform>();
image = GetComponent<Image>();
if (button != null)
{
button.onClick.AddListener(() =>
{
if (selected) return;
selected = true;
onClickButton.Invoke();
});
}
if (selected) Select();
else Deselect();
}
/// <summary>
/// 텍스트 길이에 따른 사이즈 변경
/// </summary>
/// <param name="text">Title Name</param>
public void SetText(string text)
{
txt.text = text;
rect.sizeDelta = new Vector2(txt.preferredWidth + Space, rect.sizeDelta.y);
}
/// <summary>
/// 선택된 탭
/// </summary>
public void Select()
{
if (image == null) image = GetComponent<Image>();
if (txt == null) txt = GetComponentInChildren<TextMeshProUGUI>();
image.sprite = selectSprite;
image.color = selectColor;
selected = true;
}
/// <summary>
/// 탭이 변경 될 경우
/// </summary>
public void Deselect()
{
if (image == null) image = GetComponent<Image>();
if (txt == null) txt = GetComponentInChildren<TextMeshProUGUI>();
image.sprite = normalSprite;
image.color = normalColor;
selected = false;
}
private void OnDestroy()
{
if (button != null) button.onClick.RemoveAllListeners();
onClickButton.RemoveAllListeners();
}
public void OnPointerEnter(PointerEventData eventData)
{
image.sprite = selectSprite;
image.color = HighLightColor;
}
public void OnPointerExit(PointerEventData eventData)
{
if (selected)
image.color = selectColor;
else
image.sprite = normalSprite;
image.color = normalColor;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 5ee25828847e2554a8f07bfdb12c527d

View File

@@ -0,0 +1,66 @@
using NUnit.Framework;
using System;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
namespace Studio.UVC.UI
{
/// <summary>
/// DropDown
/// </summary>
[RequireComponent(typeof(TMP_Dropdown))]
public class UVCDropDown : MonoBehaviour
{
private TMP_Dropdown dropdown;
public TMP_Dropdown DropDown
{
get
{
if (dropdown == null)
dropdown = GetComponent<TMP_Dropdown>();
return dropdown;
}
}
public Action<int> OnValueChange;
public virtual void Init()
{
dropdown = GetComponent<TMP_Dropdown>();
dropdown.ClearOptions();
dropdown.onValueChanged.AddListener(OnDropdownValueChange);
}
private void OnDropdownValueChange(int index)
{
OnValueChange?.Invoke(index);
}
/// <summary>
/// Setting Option
/// </summary>
/// <param name="data">Option Name</param>
public virtual void SetOption(string data)
{
if (dropdown == null)
{
Debug.Log("dropdown Null");
return;
}
TMP_Dropdown.OptionData option = new TMP_Dropdown.OptionData();
option.text = data;
dropdown.options.Add(option);
}
public virtual void SetOptions(List<string> datas)
{
dropdown.AddOptions(datas);
}
public virtual string GetSelectOptionName()
{
return dropdown.options[dropdown.value].text;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 1704a2490ff01d147867e1d24b9bedbf

View File

@@ -0,0 +1,43 @@
using System;
using TMPro;
using UnityEngine.EventSystems;
namespace Studio.UVC.UI
{
/// <summary>
/// 이미지 버튼
/// </summary>
public class UVCImageButton : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
{
private TextMeshProUGUI text_btnName;
public Action onClickImageBtn;
public Action onEnterImageBtn;
public Action onExitImageBtn;
public TextMeshProUGUI Text_btnName
{
get
{
if (text_btnName == null)
text_btnName = GetComponentInChildren<TextMeshProUGUI>();
return text_btnName;
}
}
public void OnPointerClick(PointerEventData eventData)
{
onClickImageBtn?.Invoke();
}
public void OnPointerEnter(PointerEventData eventData)
{
onEnterImageBtn?.Invoke();
}
public void OnPointerExit(PointerEventData eventData)
{
onExitImageBtn?.Invoke();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: d228e8ca7946fa546b95de748b8ff416

View File

@@ -0,0 +1,81 @@
using System.Linq;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Studio.UVC.UI
{
/// <summary>
/// 값이 없는 상태가 존재하면 안될 때
/// 선택지 중 하나만 골라야 할 때
/// 라디오 버튼 사용
/// </summary>
[RequireComponent(typeof(Toggle))]
public class UVCRadioButton : MonoBehaviour
{
private Toggle toggle;
private TextMeshProUGUI label;
private Image background;
private Image checkmark;
public Toggle Toggle
{
get
{
if (toggle == null)
toggle = GetComponent<Toggle>();
return toggle;
}
}
public TextMeshProUGUI Label
{
get
{
if (label == null)
{
var findText = GetComponentsInChildren<TextMeshProUGUI>();
label = findText.FirstOrDefault(x => x.name.Equals(nameof(label), System.StringComparison.OrdinalIgnoreCase));
}
return label;
}
}
public Image Background
{
get
{
if (background == null)
{
var findText = GetComponentsInChildren<Image>();
background = findText.FirstOrDefault(x => x.name.Equals(nameof(background), System.StringComparison.OrdinalIgnoreCase));
}
return background;
}
}
public Image Checkmark
{
get
{
if (checkmark == null)
{
var findText = GetComponentsInChildren<Image>();
checkmark = findText.FirstOrDefault(x => x.name.Equals(nameof(checkmark), System.StringComparison.OrdinalIgnoreCase));
}
return checkmark;
}
}
private static GameObject prefab;
public static UVCRadioButton Create(string text, Transform parent = null)
{
if (prefab == null)
prefab = Resources.Load("Prefabs/Common/UVCRadioButton") as GameObject;
var asset = Instantiate(prefab, parent);
var radio = asset.GetComponent<UVCRadioButton>();
radio.GetComponentInChildren<TextMeshProUGUI>().text = text;
return radio;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 17092b09dad0ea7419dfd6410d22812d

View File

@@ -0,0 +1,58 @@
using UnityEngine;
using UnityEngine.UI;
namespace Studio.UVC.UI
{
/// <summary>
/// 라디오Controller
/// </summary>
[RequireComponent(typeof(ToggleGroup))]
public class UVCRadioController : MonoBehaviour
{
private RectTransform rect;
private ToggleGroup radioGroup;
public ToggleGroup RadioGroup
{
get
{
if (radioGroup == null)
{
radioGroup = GetComponent<ToggleGroup>();
}
return radioGroup;
}
}
/// <summary>
/// 그룹으로 묶여 있는 토글 중 아무것도 선택을 하지 않는 것을 허용 True 비허용 False
/// </summary>
/// <param name="isOn"></param>
public void SetAllowSwitch(bool isOn)
{
RadioGroup.allowSwitchOff = isOn;
}
/// <summary>
/// 하위에 있는 모든 토글 상태 변경
/// </summary>
/// <param name="isOn"></param>
public void AllToggleOnOff(bool isOn)
{
RadioGroup.SetAllTogglesOff(isOn);
}
/// <summary>
///
/// </summary>
/// <param name="toggle"></param>
public void AddRadio(Toggle toggle)
{
toggle.group = RadioGroup;
}
private void ExpandYSize()
{
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b55b0f3817765fd43b35350c4ea27d7b

View File

@@ -0,0 +1,81 @@
using NUnit.Framework;
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using XED.VirtualFactory;
namespace Studio.UVC.UI
{
public class UVCScrollView : MonoBehaviour
{
private ScrollRect scrollRect;
private UVCScrollviewItem item;
private Action onClickScrollItem;
private List<UVCScrollviewItem> scrollItems = new();
public void Init(Vector2 size)
{
scrollRect = GetComponent<ScrollRect>();
var rect = GetComponent<RectTransform>();
rect.sizeDelta = size;
item = Resources.Load<UVCScrollviewItem>("Prefabs/Common/UVCScrollviewItem");
}
public void SetVerticalItem<T>(List<T> items)
{
if (!scrollRect.gameObject.TryGetComponent<VerticalLayoutGroup>(out var layout))
{
layout.gameObject.AddComponent<VerticalLayoutGroup>();
}
}
public void SetHorizontalItem<T>(List<T> items)
{
if (!scrollRect.gameObject.TryGetComponent<HorizontalLayoutGroup>(out var layout))
{
layout.gameObject.AddComponent<HorizontalLayoutGroup>();
}
}
private void SetPadding(LayoutGroup layoutGroup)
{
//layoutGroup.padding.
if(layoutGroup is HorizontalLayoutGroup)
{
}
switch (layoutGroup)
{
//case layoutGroup as VerticalLayoutGroup:
// break;
}
}
public void SetLayOutGroupItem<T>(List<T>items,Vector2 cellSize)
{
if(!scrollRect.gameObject.TryGetComponent<GridLayoutGroup>(out var layout))
{
layout.gameObject.AddComponent<GridLayoutGroup>();
layout.cellSize = cellSize;
}
foreach (T item in items)
{
var itme = CreateItem();
}
}
public UVCScrollviewItem CreateItem()
{
var resultItem = Instantiate<UVCScrollviewItem>(item, scrollRect.content);
resultItem.onClickButton?.Invoke();
scrollItems.Add(resultItem);
return resultItem;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 663b0bae46f9f1c4692c00ea482744f8

View File

@@ -0,0 +1,9 @@
using UnityEngine;
namespace Studio.UVC.UI
{
public class UVCScrollviewItem : UVCButton
{
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: a18d515b0e788d44ea93843d842f4752

View File

@@ -0,0 +1,78 @@
using System;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
namespace Studio.UVC.UI
{
public class UVCSlider : MonoBehaviour
{
private Slider slider;
private Image background;
private Image image_Icon;
private Image handle;
public Slider Slider
{
get
{
if (slider == null)
{
slider = GetComponentInChildren<Slider>();
}
return slider;
}
}
public Image Image_Icon
{
get
{
if (image_Icon == null)
{
var images = GetComponentsInChildren<Image>();
image_Icon = images.FirstOrDefault(x => x.name.Equals(nameof(image_Icon), StringComparison.OrdinalIgnoreCase));
}
return image_Icon;
}
}
public Image Background
{
get
{
if (background == null)
{
var images = GetComponentsInChildren<Image>();
background = images.FirstOrDefault(x => x.name.Equals(nameof(background), StringComparison.OrdinalIgnoreCase));
}
return background;
}
}
public Image Handle
{
get
{
if (handle == null)
{
var images = GetComponentsInChildren<Image>();
handle = images.FirstOrDefault(x => x.name.Equals(nameof(handle), StringComparison.OrdinalIgnoreCase));
}
return handle;
}
}
/// <summary>
/// wholeCount 설정 minvalue + upCount
/// </summary>
/// <param name="upCount"></param>
public void SetWholeNumber(int upCount)
{
var maxCount = (int)slider.minValue + upCount;
Slider.wholeNumbers = true;
Slider.maxValue = upCount;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: b3865e66319ab554cbb3bb19044d5f72

View File

@@ -0,0 +1,90 @@
using System;
using System.Collections;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
namespace Studio.UVC.UI
{
/// <summary>
/// On/Off 상태를 나타내는 버튼
/// </summary>
public class UVCSwitchButton : MonoBehaviour
{
private RectTransform rect;
private Button button_switch;
private RectTransform switch_rect;
private Image image_background;
private bool selected = false;
public bool Selected { get { return selected; } }
[SerializeField]
private float space;
[SerializeField]
private float speed_MoveTo;
[SerializeField]
private float duration_MoveTo;
private float switchBtnSize;
private float bgWidthSize;
private float process;
public Action<bool> onClickSwitch;
private float timer;
[Header("BG_Color")]
[SerializeField]
private Color normalBG;
[SerializeField]
private Color SelectBG;
public void Init()
{
rect = GetComponent<RectTransform>();
button_switch = GetComponentInChildren<Button>();
switch_rect = button_switch.GetComponent<RectTransform>();
button_switch.onClick.AddListener(OnClickSwichBtn);
var images = GetComponentsInChildren<Image>();
image_background = images.FirstOrDefault(x => x.name.Equals(nameof(image_background), System.StringComparison.OrdinalIgnoreCase));
image_background.color = normalBG;
switchBtnSize = switch_rect.sizeDelta.x;
bgWidthSize = rect.sizeDelta.x;
}
private void OnClickSwichBtn()
{
StopCoroutine(SwitchOnOff());
selected = !selected;
StartCoroutine(SwitchOnOff());
}
IEnumerator SwitchOnOff()
{
ProcessWinding();
var pos = selected ? new Vector2(bgWidthSize - (switchBtnSize + space), switch_rect.anchoredPosition.y) : new Vector2(space, switch_rect.anchoredPosition.y);
while (process < 1f)
{
timer += speed_MoveTo * 0.1f;
process += timer / duration_MoveTo;
switch_rect.anchoredPosition = Vector2.Lerp(switch_rect.anchoredPosition,pos, process);
yield return null;
}
image_background.color = selected ? SelectBG : normalBG;
timer = 0;
onClickSwitch?.Invoke(selected);
}
private void ProcessWinding()
{
timer = 0;
if (process > 0f)
{
process = 1f - process;
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 934fce4b892f1d549b12df3a199d99f8

View File

@@ -0,0 +1,146 @@
using TMPro;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace Studio.UVC.UI
{
[RequireComponent(typeof(RectTransform))]
public class UVCTabButton : UnityEngine.MonoBehaviour, ITabButton, IPointerEnterHandler, IPointerExitHandler
{
private static GameObject prefab;
public static UVCTabButton Create(string text, Transform parent = null)
{
if (prefab == null) prefab = Resources.Load("Prefabs/Common/UVCTabButton", typeof(GameObject)) as GameObject;
var instance = Instantiate(prefab, parent);
var btn = instance.GetComponent<UVCTabButton>();
if (text != null && text.Length > 0) btn.GetComponentInChildren<TextMeshProUGUI>().text = text;
return btn;
}
public UnityEvent<int, bool> onClick = new UnityEvent<int, bool>();
[SerializeField]
private bool selected = false;
public bool Selected { get => selected; }
public int Index { get; set; }
private TextMeshProUGUI txt;
private UnityEngine.UI.Button button;
private RectTransform rect;
public RectTransform Rect { get { return rect; } }
private Image image;
public Image Image { get { return image; } }
public float Space = 8f;
[Header("Color")]
public Color normalColor;
public Color highLightColor;
public Color selectColor;
[Header("Sprite")]
public Sprite normalSprite;
public Sprite selectSprite;
public void Init()
{
txt = GetComponentInChildren<TextMeshProUGUI>();
button = GetComponent<UnityEngine.UI.Button>();
rect = GetComponent<RectTransform>();
image = GetComponent<Image>();
if (button != null)
{
button.onClick.AddListener(() =>
{
if (selected) return;
selected = true;
onClick.Invoke(Index, selected);
});
}
if (selected) Select();
else Deselect();
}
/// <summary>
/// 텍스트 길이에 따른 사이즈 변경
/// </summary>
/// <param name="text">Title Name</param>
/// <param name="isSize">autosizeing</param>
public void SetText(string text,bool isAutoSize)
{
txt.text = text;
if(isAutoSize)
rect.sizeDelta = new Vector2(txt.preferredWidth + Space, rect.sizeDelta.y);
}
/// <summary>
/// 선택된 탭
/// </summary>
public void Select()
{
if (image == null) image = GetComponent<Image>();
if (txt == null) txt = GetComponentInChildren<TextMeshProUGUI>();
image.sprite = selectSprite;
image.color = selectColor;
selected = true;
}
/// <summary>
/// 탭이 변경 될 경우
/// </summary>
public void Deselect()
{
if (image == null) image = GetComponent<Image>();
if (txt == null) txt = GetComponentInChildren<TextMeshProUGUI>();
image.sprite = normalSprite;
image.color = normalColor;
selected = false;
}
/// <summary>
/// 버튼 상태에 따른 색상 설정
/// </summary>
/// <param name="_normalColor"></param>
/// <param name="_highLightColor"></param>
/// <param name="_selectColor"></param>
public void SetButtonColor(Color _normalColor, Color _highLightColor, Color _selectColor)
{
normalColor = _normalColor;
highLightColor = _highLightColor;
selectColor = _selectColor;
}
private void OnDestroy()
{
if (button != null) button.onClick.RemoveAllListeners();
onClick.RemoveAllListeners();
}
public void OnPointerEnter(PointerEventData eventData)
{
image.sprite = selectSprite;
image.color = highLightColor;
}
public void OnPointerExit(PointerEventData eventData)
{
if (selected)
image.color = selectColor;
else
image.sprite = normalSprite;
image.color = normalColor;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 63abeabf96bb6b64b895ab577888d1fd

View File

@@ -1,8 +1,9 @@
namespace XRLib.UI
using UnityEngine;
namespace XRLib.UI
{
public abstract class PanelBase : UIBase
{
}

View File

@@ -0,0 +1,28 @@
# Changelog
## 3.0.0 (2023-01-01)
__Additions and improvements__
- New namespace hierarchy.
- Added [DNSCache](https://bestdocshub.pages.dev/Shared/DNS/dns-cache.md) implementation to speed up consecutive connection processes.
- Added support for [DNSCache](https://bestdocshub.pages.dev/HTTP/api-reference/Cache/DNSCache.md) to manually store and retrieve entries.
- Added new [Negotiator](https://bestdocshub.pages.dev/HTTP/api-reference/Tcp/Negotiator.md) class help building new plugins that doesn't use HTTP, but require the same lower-level infrastructure.
- Added new [TCPRingmaster](https://bestdocshub.pages.dev/HTTP/api-reference/Tcp/TCPRingmaster.md) class to speed up TCP connection process by sending out multiple tcp connection requests and use the first connected one.
- Reimplemented connection logic to use the new DNS cache, negotiator and tcp-ringmaster.
- Reimplemented network read and write operations. Instead of blocking Reads&Writes, now the plugin uses non-blocking functions. This enabled implementing new ways for downloads and uploads. There's forward and backward feedback between the low level tcp layer and higher level connection layers. If the [download-stream](https://bestdocshub.pages.dev/HTTP/api-reference/Response/DownloadContentStream.md)'s buffer is full, it can notify the tcp layer that it can resume receiving from the server.
- Reimplemented [HTTPCache](https://bestdocshub.pages.dev/HTTP/api-reference/Caching/HTTPCache.md), it's got more robust and future proof.
- (#69) Now it's possible and easy to populate the local HTTP cache.
- Added new, cleaner samples for both old and new features.
- Halved active threads per connections.
- Added [Memory](https://bestdocshub.pages.dev/Shared/Profiler/memory.md) and [Network](https://bestdocshub.pages.dev/Shared/Profiler/memory.md) profilers.
__Removals__
- Removed old, cluttered samples.
__Fixes__
- Fixed chaos around different upload sources (RawData, Forms, UploadStream) and unified them in one [UploadStream](https://bestdocshub.pages.dev/HTTP/getting-started/uploads.md).
For API changes and upgrade guides see the [Upgrade Guide topic](https://bestdocshub.pages.dev/HTTP/upgrade-guide.md).

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: a17df9b0515742b44b02487fd902a50a
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/CHANGELOG.md
uploadId: 743984

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,25 @@
#if BESTHTTP_PROFILE && UNITY_2021_2_OR_NEWER
using Best.HTTP.Profiler.Memory;
using Unity.Profiling.Editor;
namespace Best.HTTP.Editor.Profiler.Memory
{
[System.Serializable]
[ProfilerModuleMetadata(MemoryStats.CategoryName)]
public sealed class MemoryStatsProfilerModule : ProfilerModule
{
static readonly ProfilerCounterDescriptor[] k_Counters =
{
new ProfilerCounterDescriptor(MemoryStats.BorrowedName, MemoryStats.Category),
new ProfilerCounterDescriptor(MemoryStats.PooledName, MemoryStats.Category),
new ProfilerCounterDescriptor(MemoryStats.CacheHitsName, MemoryStats.Category),
new ProfilerCounterDescriptor(MemoryStats.ArrayAllocationsName, MemoryStats.Category)
};
public MemoryStatsProfilerModule() : base(k_Counters)
{
}
}
}
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: a27483e3bb01d5546bd803c92f53c77f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/Editor/Profiler/Memory/MemoryStatsProfilerModule.cs
uploadId: 743984

View File

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

View File

@@ -0,0 +1,34 @@
#if BESTHTTP_PROFILE && UNITY_2021_2_OR_NEWER
using Unity.Profiling.Editor;
using Best.HTTP.Profiler.Network;
namespace Best.HTTP.Editor.Profiler.Network
{
[System.Serializable]
[ProfilerModuleMetadata(NetworkStats.CategoryName)]
public sealed class NetworkStatsProfilerModule : ProfilerModule
{
static readonly ProfilerCounterDescriptor[] k_Counters =
{
new ProfilerCounterDescriptor(NetworkStats.BufferedToSendName, NetworkStats.Category),
new ProfilerCounterDescriptor(NetworkStats.SentSinceLastFrameName, NetworkStats.Category),
new ProfilerCounterDescriptor(NetworkStats.SentTotalName, NetworkStats.Category),
new ProfilerCounterDescriptor(NetworkStats.ReceivedAndUnprocessedName, NetworkStats.Category),
new ProfilerCounterDescriptor(NetworkStats.ReceivedSinceLastFrameName, NetworkStats.Category),
new ProfilerCounterDescriptor(NetworkStats.ReceivedTotalName, NetworkStats.Category),
new ProfilerCounterDescriptor(NetworkStats.OpenConnectionsName, NetworkStats.Category),
new ProfilerCounterDescriptor(NetworkStats.TotalConnectionsName, NetworkStats.Category),
new ProfilerCounterDescriptor(NetworkStats.TotalDNSCacheHits, NetworkStats.Category),
new ProfilerCounterDescriptor(NetworkStats.TotalDNSCacheMiss, NetworkStats.Category),
};
public NetworkStatsProfilerModule() : base(k_Counters)
{
}
}
}
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 997070aa1f569c44ab6386e5a3b8c075
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/Editor/Profiler/Network/NetworkStatsProfilerModule.cs
uploadId: 743984

View File

@@ -0,0 +1,25 @@
{
"name": "com.Tivadar.Best.HTTP.Profiler.Editor",
"rootNamespace": "",
"references": [
"GUID:b46779583a009f04ba9f5f31d0e7e6ac",
"GUID:9069ac25d95ca17448a247f3bb1c769f"
],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": false,
"defineConstraints": [],
"versionDefines": [
{
"name": "com.unity.profiling.core",
"expression": "1.0.0",
"define": "BESTHTTP_PROFILE"
}
],
"noEngineReferences": false
}

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: f5172b08096bc564e960c6b5e420e790
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/Editor/Profiler/com.Tivadar.Best.HTTP.Profiler.Editor.asmdef
uploadId: 743984

View File

@@ -0,0 +1 @@
The plugin's license falls under the Unity Asset Store EULA that can be found here under Appendix 1: https://unity3d.com/legal/as_terms

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: a2e6e996ec793e84fa9174fa8769cc7f
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/LICENSE.md
uploadId: 743984

View File

@@ -0,0 +1,85 @@
Best HTTP is a comprehensive networking library for Unity that empowers developers to make HTTP and HTTPS requests with ease.
Whether you're building web applications, multiplayer games, or real-time communication solutions, Best HTTP has got you covered.
## Overview
In today's digital era, efficient and reliable web communication forms the backbone of many applications.
Whether you're fetching data from remote servers, sending game scores, or updating user profiles, HTTP requests are indispensable.
Recognizing the multifaceted needs of Unity developers, Best HTTP is designed to simplify these interactions, providing a streamlined and efficient means to handle web-based communication.
## Key Features
- **Supported Unity Versions**: Best HTTP is compatible with Unity versions starting from :fontawesome-brands-unity: **2021.1 onwards**.
- **Cross-Platform:** Best HTTP is designed to work seamlessly across a diverse range of Unity platforms, ensuring versatility for all your development needs. Specifically, it supports:
- :fontawesome-solid-desktop: **Desktop**: Windows, Linux, MacOS
- :fontawesome-solid-mobile: **Mobile**: iOS, Android
- :material-microsoft-windows: **Universal Windows Platform** (UWP)
- :material-web: **Web Browsers**: WebGL
This broad platform support means you can confidently use Best HTTP, regardless of your target audience or deployment strategy.
- **Versatile Request Outcome Handling**: Best HTTP ensures flexibility in managing network request outcomes to seamlessly fit within your development style and the varied structures of different applications:
- **Traditional Callbacks:** Adopt the classic approach with regular C# callbacks. Ideal for those who prefer traditional programming patterns, allowing for simple and straightforward handling of responses.
- **Unity Coroutines:** For those who are deeply integrated with Unity's workflow, Best HTTP provides native support for Unity's coroutines. This facilitates non-blocking operations while keeping the code structure clean and readable, particularly when sequencing multiple network requests.
- **Async-Await Pattern:** Embrace the modern C# asynchronous programming paradigm with the async-await pattern. Best HTTP's support for this ensures that developers can write non-blocking code in a linear fashion, greatly simplifying error handling and state management for asynchronous operations.
With these diverse options for request outcome handling, developers can choose the best approach that aligns with their project requirements and personal coding preferences.
- **HTTP/HTTPS Support**: Best HTTP supports both HTTP and HTTPS protocols, ensuring secure communication for your applications.
- **HTTP/2 Support**: Benefit from the advantages of HTTP/2, including faster loading times, reduced latency and **trailing headers** for advanced scenarios like **GRPC**.
- **Caching**: Implement efficient caching mechanisms to reduce redundant network requests, optimizing your application's performance and data usage.
- **Authentication**: Easily handle various authentication methods, such as Basic, Digest, and Bearer token authentication.
- **Cookie Management**: Manage cookies effortlessly, ensuring smooth user experiences in web applications.
- **Compression**: Compress and decompress data using gzip and deflate algorithms to save bandwidth and improve loading times.
- **Streaming**: Best HTTP supports streaming for both downloads and uploads. This enables you to stream large files and responses directly to storage when downloading, and stream data from storage when uploading, effectively avoiding memory bottlenecks.
- **Customization**: Tailor your HTTP requests with customizable headers, timeouts, and other parameters to meet your specific needs.
- **Built-In Profiler Support**: Best HTTP now comes with a built-in profiler, ensuring developers have direct access to critical insights without the need for external tools.
This enhancement is instrumental in understanding the performance and network behavior of your application, thereby facilitating optimization and debugging. Key features of the built-in profiler include:
- **Memory Profiler:** Dive into the library's internal memory usage. This tool is invaluable for ensuring optimal memory management and for identifying potential bottlenecks or leaks.
- **Network Profiler:** This profiler allows for a granular analysis of your network operations. Notable features include:
- **Byte Tracking:** Monitor the bytes sent and received between two frames, providing a clear overview of data transfers and insight into traffic patterns.
- **Connection Analysis:** Stay informed on the total number of open and closed connections. This data gives a transparent view of your app's network activity.
- **DNS Cache Profiling:** With this feature, you can track DNS cache hits and misses, aiding in the fine-tuning of DNS cache strategies and understanding potential network resolution delays.
With the integration of this built-in profiler support, developers can not only ensure that their application's network activities are optimized but also make data-driven decisions that enhance both performance and user experience.
## Installation Guide
Getting started with Best HTTP is straightforward.
Depending on your preference, you can either install the package via the Unity Asset Store or use a .unitypackage.
Below are step-by-step guides for both methods:
### Installing from the Unity Asset Store using the Package Manager Window
1. **Purchase:** If you haven't previously purchased the package, proceed to do so. Once purchased, Unity will recognize your purchase, and you can install the package directly from within the Unity Editor. If you already own the package, you can skip these steps.
1. **Visit the Unity Asset Store:** Using your preferred web browser, navigate to the [Unity Asset Store](https://assetstore.unity.com/publishers/4137?aid=1101lfX8E).
2. **Search for Best HTTP:** Locate and choose the official Best HTTP package.
3. **Buy Best HTTP:** By clicking on the `Buy Now` button go though the purchase process.
2. **Open Unity & Access the Package Manager:** Launch Unity and open your desired project. Navigate to [Window > Package Manager](https://docs.unity3d.com/Manual/upm-ui.html).
3. **Select 'My Assets':** In the Package Manager window, switch to the [My Assets](https://docs.unity3d.com/Manual/upm-ui-import.html) tab. This will show all assets you have access to, including ones you've purchased or added to your Asset Store account.
4. **Find Best HTTP and Download:** Locate "Best HTTP" in the list. Once found, click on it to view the details. If the package isn't already downloaded, you'll see a Download button. Click this button and wait for the package to download. Once downloaded, the button will change to Import.
5. **Import the Package:** After downloading, click the Import button. Unity will then show you a list of all the assets associated with the Best HTTP package. Ensure all assets are checked and click Import.
6. **Confirmation:** Upon importing, Best HTTP will be added to your project, indicating a successful installation.
### Installing from a .unitypackage file
In some cases you might have a .unitypackage file containing the plugin.
1. **Download the .unitypackage:** Ensure you have the Best HTTP.unitypackage file saved on your computer. This might be from a direct download link or an email attachment, depending on how it was distributed.
2. **Import into Unity:** Launch Unity and open your project. Go to Assets > Import Package > Custom Package.
3. **Locate and Select the .unitypackage:** Navigate to the location where you saved the Best HTTP.unitypackage file. Select it and click Open.
4. **Review and Import:** Unity will show you a list of all the assets contained in the package. Make sure all assets are selected and click Import.
5. **Confirmation:** After importing, you should see all the Best HTTP assets added to your project's Asset folder, confirming a successful installation.
!!! Note
Best HTTP also supports other installation methods as documented in Unity's manual for packages.
For more advanced installation options, refer to the Unity Manual on [Sharing Packages](https://docs.unity3d.com/Manual/cus-share.html).
### Assembly Definitions and Runtime References
For developers familiar with Unity's development patterns, it's essential to understand how Best HTTP incorporates Unity's systems:
- **Assembly Definition Files:** Best HTTP incorporates [Unity's Assembly Definition files](https://docs.unity3d.com/Manual/ScriptCompilationAssemblyDefinitionFiles.html). It aids in organizing and managing the codebase efficiently.
- **Auto-Referencing of Runtime DLLs:** The runtime DLLs produced by Best HTTP are [Auto Referenced](https://docs.unity3d.com/Manual/class-AssemblyDefinitionImporter.html), allowing Unity to automatically recognize and utilize them without manual intervention.
- **Manual Package Referencing:** Should you need to reference Best HTTP manually in your project (for advanced setups or specific use cases), you can do so. Simply [reference the package](https://docs.unity3d.com/Manual/ScriptCompilationAssemblyDefinitionFiles.html#reference-another-assembly) by searching for `com.Tivadar.Best.HTTP`.
That's it! You've now successfully installed Best HTTP in your Unity project. Dive into the [Getting Started guide](getting-started/index.md) to begin your journey with Best HTTP.
If you encounter any issues or need further assistance, please visit our [Community and Support page](../Shared/support.md).

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: d945ceaee22ec124ea21e8924d1780f9
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/README.md
uploadId: 743984

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,7 @@
Copyright (c) 2000 - 2017 The Legion of the Bouncy Castle Inc. (https://www.bouncycastle.org)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,14 @@
fileFormatVersion: 2
guid: deffb42883fe27b4c833e8617deec47f
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/Runtime/3rdParty/BouncyCastle/License.txt
uploadId: 743984

View File

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

View File

@@ -0,0 +1,32 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System.IO;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1
{
public abstract class Asn1Generator
{
private Stream _out;
protected Asn1Generator(
Stream outStream)
{
_out = outStream;
}
protected Stream Out
{
get { return _out; }
}
public abstract void AddObject(Asn1Encodable obj);
public abstract void AddObject(Asn1Object obj);
public abstract Stream GetRawOutputStream();
public abstract void Close();
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 7773fea4f16e26d4480e20f8df896c7f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/Runtime/3rdParty/BouncyCastle/asn1/ASN1Generator.cs
uploadId: 743984

View File

@@ -0,0 +1,17 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using System.IO;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1
{
public interface Asn1OctetStringParser
: IAsn1Convertible
{
/// <summary>Return the content of the OCTET STRING as a <see cref="Stream"/>.</summary>
/// <returns>A <see cref="Stream"/> represnting the OCTET STRING's content.</returns>
Stream GetOctetStream();
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 106a99bb8c6b6c046b7a5d3f6dc106a2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/Runtime/3rdParty/BouncyCastle/asn1/ASN1OctetStringParser.cs
uploadId: 743984

View File

@@ -0,0 +1,12 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1
{
public interface Asn1SequenceParser
: IAsn1Convertible
{
IAsn1Convertible ReadObject();
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: a5d90107b1bb70649bd933287abb52a6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/Runtime/3rdParty/BouncyCastle/asn1/ASN1SequenceParser.cs
uploadId: 743984

View File

@@ -0,0 +1,12 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1
{
public interface Asn1SetParser
: IAsn1Convertible
{
IAsn1Convertible ReadObject();
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 2d056b261f918f64b8a91a610ceb8702
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/Runtime/3rdParty/BouncyCastle/asn1/ASN1SetParser.cs
uploadId: 743984

View File

@@ -0,0 +1,248 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using System.IO;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1
{
public class Asn1StreamParser
{
private readonly Stream _in;
private readonly int _limit;
private readonly byte[][] tmpBuffers;
public Asn1StreamParser(Stream input)
: this(input, Asn1InputStream.FindLimit(input))
{
}
public Asn1StreamParser(byte[] encoding)
: this(new MemoryStream(encoding, false), encoding.Length)
{
}
public Asn1StreamParser(Stream input, int limit)
: this(input, limit, new byte[16][])
{
}
internal Asn1StreamParser(Stream input, int limit, byte[][] tmpBuffers)
{
if (!input.CanRead)
throw new ArgumentException("Expected stream to be readable", "input");
this._in = input;
this._limit = limit;
this.tmpBuffers = tmpBuffers;
}
public virtual IAsn1Convertible ReadObject()
{
int tagHdr = _in.ReadByte();
if (tagHdr < 0)
return null;
return ImplParseObject(tagHdr);
}
internal IAsn1Convertible ImplParseObject(int tagHdr)
{
// turn off looking for "00" while we resolve the tag
Set00Check(false);
//
// calculate tag number
//
int tagNo = Asn1InputStream.ReadTagNumber(_in, tagHdr);
//
// calculate length
//
int length = Asn1InputStream.ReadLength(_in, _limit,
tagNo == Asn1Tags.BitString || tagNo == Asn1Tags.OctetString || tagNo == Asn1Tags.Sequence ||
tagNo == Asn1Tags.Set || tagNo == Asn1Tags.External);
if (length < 0) // indefinite-length method
{
if (0 == (tagHdr & Asn1Tags.Constructed))
throw new IOException("indefinite-length primitive encoding encountered");
IndefiniteLengthInputStream indIn = new IndefiniteLengthInputStream(_in, _limit);
Asn1StreamParser sp = new Asn1StreamParser(indIn, _limit, tmpBuffers);
int tagClass = tagHdr & Asn1Tags.Private;
if (0 != tagClass)
return new BerTaggedObjectParser(tagClass, tagNo, sp);
return sp.ParseImplicitConstructedIL(tagNo);
}
else
{
DefiniteLengthInputStream defIn = new DefiniteLengthInputStream(_in, length, _limit);
if (0 == (tagHdr & Asn1Tags.Flags))
return ParseImplicitPrimitive(tagNo, defIn);
Asn1StreamParser sp = new Asn1StreamParser(defIn, defIn.Remaining, tmpBuffers);
int tagClass = tagHdr & Asn1Tags.Private;
if (0 != tagClass)
{
bool isConstructed = (tagHdr & Asn1Tags.Constructed) != 0;
return new DLTaggedObjectParser(tagClass, tagNo, isConstructed, sp);
}
return sp.ParseImplicitConstructedDL(tagNo);
}
}
internal Asn1Object LoadTaggedDL(int tagClass, int tagNo, bool constructed)
{
if (!constructed)
{
byte[] contentsOctets = ((DefiniteLengthInputStream)_in).ToArray();
return Asn1TaggedObject.CreatePrimitive(tagClass, tagNo, contentsOctets);
}
Asn1EncodableVector contentsElements = ReadVector();
return Asn1TaggedObject.CreateConstructedDL(tagClass, tagNo, contentsElements);
}
internal Asn1Object LoadTaggedIL(int tagClass, int tagNo)
{
Asn1EncodableVector contentsElements = ReadVector();
return Asn1TaggedObject.CreateConstructedIL(tagClass, tagNo, contentsElements);
}
internal IAsn1Convertible ParseImplicitConstructedDL(int univTagNo)
{
switch (univTagNo)
{
case Asn1Tags.BitString:
// TODO[asn1] DLConstructedBitStringParser
return new BerBitStringParser(this);
case Asn1Tags.External:
return new DerExternalParser(this);
case Asn1Tags.OctetString:
// TODO[asn1] DLConstructedOctetStringParser
return new BerOctetStringParser(this);
case Asn1Tags.Set:
return new DerSetParser(this);
case Asn1Tags.Sequence:
return new DerSequenceParser(this);
default:
throw new Asn1Exception("unknown DL object encountered: 0x" + univTagNo.ToString("X"));
}
}
internal IAsn1Convertible ParseImplicitConstructedIL(int univTagNo)
{
switch (univTagNo)
{
case Asn1Tags.BitString:
return new BerBitStringParser(this);
case Asn1Tags.External:
// TODO[asn1] BERExternalParser
return new DerExternalParser(this);
case Asn1Tags.OctetString:
return new BerOctetStringParser(this);
case Asn1Tags.Sequence:
return new BerSequenceParser(this);
case Asn1Tags.Set:
return new BerSetParser(this);
default:
throw new Asn1Exception("unknown BER object encountered: 0x" + univTagNo.ToString("X"));
}
}
internal IAsn1Convertible ParseImplicitPrimitive(int univTagNo)
{
return ParseImplicitPrimitive(univTagNo, (DefiniteLengthInputStream)_in);
}
internal IAsn1Convertible ParseImplicitPrimitive(int univTagNo, DefiniteLengthInputStream defIn)
{
// Some primitive encodings can be handled by parsers too...
switch (univTagNo)
{
case Asn1Tags.BitString:
return new DLBitStringParser(defIn);
case Asn1Tags.External:
throw new Asn1Exception("externals must use constructed encoding (see X.690 8.18)");
case Asn1Tags.OctetString:
return new DerOctetStringParser(defIn);
case Asn1Tags.Set:
throw new Asn1Exception("sequences must use constructed encoding (see X.690 8.9.1/8.10.1)");
case Asn1Tags.Sequence:
throw new Asn1Exception("sets must use constructed encoding (see X.690 8.11.1/8.12.1)");
}
try
{
return Asn1InputStream.CreatePrimitiveDerObject(univTagNo, defIn, tmpBuffers);
}
catch (ArgumentException e)
{
throw new Asn1Exception("corrupted stream detected", e);
}
}
internal IAsn1Convertible ParseObject(int univTagNo)
{
if (univTagNo < 0 || univTagNo > 30)
throw new ArgumentException("invalid universal tag number: " + univTagNo, "univTagNo");
int tagHdr = _in.ReadByte();
if (tagHdr < 0)
return null;
if ((tagHdr & ~Asn1Tags.Constructed) != univTagNo)
throw new IOException("unexpected identifier encountered: " + tagHdr);
return ImplParseObject(tagHdr);
}
internal Asn1TaggedObjectParser ParseTaggedObject()
{
int tagHdr = _in.ReadByte();
if (tagHdr< 0)
return null;
int tagClass = tagHdr & Asn1Tags.Private;
if (0 == tagClass)
throw new Asn1Exception("no tagged object found");
return (Asn1TaggedObjectParser)ImplParseObject(tagHdr);
}
// TODO[asn1] Prefer 'LoadVector'
internal Asn1EncodableVector ReadVector()
{
int tagHdr = _in.ReadByte();
if (tagHdr < 0)
return new Asn1EncodableVector(0);
Asn1EncodableVector v = new Asn1EncodableVector();
do
{
IAsn1Convertible obj = ImplParseObject(tagHdr);
v.Add(obj.ToAsn1Object());
}
while ((tagHdr = _in.ReadByte()) >= 0);
return v;
}
private void Set00Check(bool enabled)
{
if (_in is IndefiniteLengthInputStream indef)
{
indef.SetEofOn00(enabled);
}
}
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 2ba3873ab071c0c4cb935177f746056d
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/Runtime/3rdParty/BouncyCastle/asn1/ASN1StreamParser.cs
uploadId: 743984

View File

@@ -0,0 +1,39 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using System.IO;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1
{
public interface Asn1TaggedObjectParser
: IAsn1Convertible
{
int TagClass { get; }
int TagNo { get; }
bool HasContextTag(int tagNo);
bool HasTag(int tagClass, int tagNo);
/// <exception cref="IOException"/>
IAsn1Convertible ParseBaseUniversal(bool declaredExplicit, int baseTagNo);
/// <summary>Needed for open types, until we have better type-guided parsing support.</summary>
/// <remarks>
/// Use sparingly for other purposes, and prefer <see cref="ParseExplicitBaseTagged"/> or
/// <see cref="ParseBaseUniversal(bool, int)"/> where possible. Before using, check for matching tag
/// <see cref="TagClass">class</see> and <see cref="TagNo">number</see>.
/// </remarks>
/// <exception cref="IOException"/>
IAsn1Convertible ParseExplicitBaseObject();
/// <exception cref="IOException"/>
Asn1TaggedObjectParser ParseExplicitBaseTagged();
/// <exception cref="IOException"/>
Asn1TaggedObjectParser ParseImplicitBaseTagged(int baseTagClass, int baseTagNo);
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: ea10709a890a7a246bd1f3dd49c4a30f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/Runtime/3rdParty/BouncyCastle/asn1/ASN1TaggedObjectParser.cs
uploadId: 743984

View File

@@ -0,0 +1,36 @@
#if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
#pragma warning disable
using System;
using System.IO;
namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1
{
public interface Asn1BitStringParser
: IAsn1Convertible
{
/// <summary>Return a <see cref="Stream"/> representing the contents of the BIT STRING. The final byte, if any,
/// may include pad bits. See <see cref="PadBits"/>.</summary>
/// <returns>A <see cref="Stream"/> with its source as the BIT STRING content.</returns>
/// <exception cref="IOException"/>
Stream GetBitStream();
/// <summary>Return a <see cref="Stream"/> representing the contents of the BIT STRING, where the content is
/// expected to be octet-aligned (this will be automatically checked during parsing).</summary>
/// <returns>A <see cref="Stream"/> with its source as the BIT STRING content.</returns>
/// <exception cref="IOException"/>
Stream GetOctetStream();
/// <summary>Return the number of pad bits, if any, in the final byte, if any, read from
/// <see cref="GetBitStream"/>.</summary>
/// <remarks>
/// This number is in the range zero to seven. That number of the least significant bits of the final byte, if
/// any, are not part of the contents and should be ignored. NOTE: Must be called AFTER the stream has been
/// fully processed. (Does not need to be called if <see cref="GetOctetStream"/> was used instead of
/// <see cref="GetBitStream"/>.
/// </remarks>
/// <returns>The number of pad bits. In the range zero to seven.</returns>
int PadBits { get; }
}
}
#pragma warning restore
#endif

View File

@@ -0,0 +1,18 @@
fileFormatVersion: 2
guid: 8af37adf1ddd05d40a2f5b914eb19ca0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 267636
packageName: Best HTTP
packageVersion: 3.0.15
assetPath: Packages/com.tivadar.best.http/Runtime/3rdParty/BouncyCastle/asn1/Asn1BitStringParser.cs
uploadId: 743984

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