Compare commits
No commits in common. "master" and "bak_AlphaFristLove" have entirely different histories.
master
...
bak_AlphaF
11
.gitignore
vendored
11
.gitignore
vendored
@ -13,10 +13,7 @@
|
|||||||
/AxibugEmuOnline.Client/ProjectSettings/ProjectVersion.txt
|
/AxibugEmuOnline.Client/ProjectSettings/ProjectVersion.txt
|
||||||
/AxibugEmuOnline.Client/ProjectSettings/AutoStreamingSettings.asset
|
/AxibugEmuOnline.Client/ProjectSettings/AutoStreamingSettings.asset
|
||||||
/AxibugEmuOnline.Client/Logs
|
/AxibugEmuOnline.Client/Logs
|
||||||
|
/virtuanessrc097-master/save
|
||||||
/virtuanessrc097-master
|
/virtuanessrc097-master/.vs
|
||||||
/AxibugEmuOnline.Server/config.cfg
|
/virtuanessrc097-master/Debug
|
||||||
/AxibugEmuOnline.Server/bin/
|
/virtuanessrc097-master/VirtuaNES.ini
|
||||||
/AxibugEmuOnline.Client/.editorconfig
|
|
||||||
/AxibugEmuOnline.Client/*.user
|
|
||||||
/AxibugEmuOnline.Client/.idea
|
|
||||||
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiCanvasScaler : UnityEngine.UI.CanvasScaler {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 473ebc56afd3a42478d4384e874c37fb
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiContentSizeFitter : UnityEngine.UI.ContentSizeFitter {} }
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiEventSystem : UnityEngine.EventSystems.EventSystem {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 1a44ffc6225f2f94e96923be40838c6b
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiGraphicRaycaster : UnityEngine.UI.GraphicRaycaster {} }
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiHorizontalLayoutGroup : UnityEngine.UI.HorizontalLayoutGroup {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 250a43c57c3dd7743b159142e0e972dc
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiImage : UnityEngine.UI.Image {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 51fcfe4c344a349498d3e605566e449c
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiInputField : UnityEngine.UI.InputField {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c06c5945ce05264419dd9baf5052c6d2
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiLayoutElement : UnityEngine.UI.LayoutElement {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 662c10b55acd55b41a61b98b4e6dbdae
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiRawImage : UnityEngine.UI.RawImage {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: e197a80ecc5234d41a58d206698ab683
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiScrollRect : UnityEngine.UI.ScrollRect {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0bacff8c6cfbc6f4ea2f41852d636203
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiShadow : UnityEngine.UI.Shadow {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 5397b0dcf716afa45b892bb200561edb
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiSlider : UnityEngine.UI.Slider {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: bd0459cd2daa17e4bbbce2a219502891
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiStandaloneInputModule : UnityEngine.EventSystems.StandaloneInputModule {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c4e4880eab24b7e49b7db61357d9fbd2
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiText : UnityEngine.UI.Text {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: d1e4d2ce69fe5c345903d4219ba84715
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1 +0,0 @@
|
|||||||
namespace AxibugCom { public class AxiVerticalLayoutGroup : UnityEngine.UI.VerticalLayoutGroup {} }
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c6cc678483f4f2849bc6bbbcc66481a6
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,120 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!114 &11400000
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 0}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 47ae96bfd5393694da28c22ab2ccfb7c, type: 3}
|
|
||||||
m_Name: AxiComToolCache
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
caches:
|
|
||||||
- SrcFullName: UnityEngine.EventSystems.EventSystem
|
|
||||||
SrcName: EventSystem
|
|
||||||
GUID: 76c392e42b5098c458856cdf6ecaaaa1
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.EventSystems.StandaloneInputModule
|
|
||||||
SrcName: StandaloneInputModule
|
|
||||||
GUID: 4f231c4fb786f3946a6b90b886c48677
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.CanvasScaler
|
|
||||||
SrcName: CanvasScaler
|
|
||||||
GUID: 0cd44c1031e13a943bb63640046fad76
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.GraphicRaycaster
|
|
||||||
SrcName: GraphicRaycaster
|
|
||||||
GUID: dc42784cf147c0c48a680349fa168899
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.Image
|
|
||||||
SrcName: Image
|
|
||||||
GUID: fe87c0e1cc204ed48ad3b37840f39efc
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.RawImage
|
|
||||||
SrcName: RawImage
|
|
||||||
GUID: 1344c3c82d62a2a41a3576d8abb8e3ea
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.HorizontalLayoutGroup
|
|
||||||
SrcName: HorizontalLayoutGroup
|
|
||||||
GUID: 30649d3a9faa99c48a7b1166b86bf2a0
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.ContentSizeFitter
|
|
||||||
SrcName: ContentSizeFitter
|
|
||||||
GUID: 3245ec927659c4140ac4f8d17403cc18
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.LayoutElement
|
|
||||||
SrcName: LayoutElement
|
|
||||||
GUID: 306cc8c2b49d7114eaa3623786fc2126
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.Text
|
|
||||||
SrcName: Text
|
|
||||||
GUID: 5f7201a12d95ffc409449d95f23cf332
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.Shadow
|
|
||||||
SrcName: Shadow
|
|
||||||
GUID: cfabb0440166ab443bba8876756fdfa9
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.ScrollRect
|
|
||||||
SrcName: ScrollRect
|
|
||||||
GUID: 1aa08ab6e0800fa44ae55d278d1423e3
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.VerticalLayoutGroup
|
|
||||||
SrcName: VerticalLayoutGroup
|
|
||||||
GUID: 59f8146938fff824cb5fd77236b75775
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.Slider
|
|
||||||
SrcName: Slider
|
|
||||||
GUID: 67db9e8f0e2ae9c40bc1e2b64352a6b4
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
||||||
- SrcFullName: UnityEngine.UI.InputField
|
|
||||||
SrcName: InputField
|
|
||||||
GUID: d199490a83bb2b844b9695cbf13b01ef
|
|
||||||
ToName:
|
|
||||||
ToPATH:
|
|
||||||
ToGUID:
|
|
||||||
monoScript: {fileID: 0}
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: d8f9e9475a806e04bb9d6946f20f4d0f
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 11400000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 113d55ba3dc10674b9bc51fc07159850
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
File diff suppressed because it is too large
Load Diff
@ -1,436 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System;
|
|
||||||
using UnityEngine.Profiling;
|
|
||||||
|
|
||||||
public class Debugger : MonoBehaviour
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 是否允许调试
|
|
||||||
/// </summary>
|
|
||||||
public bool AllowDebugging = true;
|
|
||||||
|
|
||||||
private DebugType _debugType = DebugType.Console;
|
|
||||||
private List<LogData> _logInformations = new List<LogData>();
|
|
||||||
private int _currentLogIndex = -1;
|
|
||||||
private int _infoLogCount = 0;
|
|
||||||
private int _warningLogCount = 0;
|
|
||||||
private int _errorLogCount = 0;
|
|
||||||
private int _fatalLogCount = 0;
|
|
||||||
private bool _showInfoLog = true;
|
|
||||||
private bool _showWarningLog = true;
|
|
||||||
private bool _showErrorLog = true;
|
|
||||||
private bool _showFatalLog = true;
|
|
||||||
private Vector2 _scrollLogView = Vector2.zero;
|
|
||||||
private Vector2 _scrollCurrentLogView = Vector2.zero;
|
|
||||||
private Vector2 _scrollSystemView = Vector2.zero;
|
|
||||||
private bool _expansion = false;
|
|
||||||
private Rect _windowRect = new Rect(0, 0, 100, 60);
|
|
||||||
|
|
||||||
private int _fps = 0;
|
|
||||||
private Color _fpsColor = Color.white;
|
|
||||||
private int _frameNumber = 0;
|
|
||||||
private float _lastShowFPSTime = 0f;
|
|
||||||
|
|
||||||
private void Start()
|
|
||||||
{
|
|
||||||
DontDestroyOnLoad(this.gameObject);
|
|
||||||
if (AllowDebugging)
|
|
||||||
{
|
|
||||||
Application.logMessageReceived += LogHandler;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void Update()
|
|
||||||
{
|
|
||||||
if (AllowDebugging)
|
|
||||||
{
|
|
||||||
_frameNumber += 1;
|
|
||||||
float time = Time.realtimeSinceStartup - _lastShowFPSTime;
|
|
||||||
if (time >= 1)
|
|
||||||
{
|
|
||||||
_fps = (int)(_frameNumber / time);
|
|
||||||
_frameNumber = 0;
|
|
||||||
_lastShowFPSTime = Time.realtimeSinceStartup;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void OnDestory()
|
|
||||||
{
|
|
||||||
if (AllowDebugging)
|
|
||||||
{
|
|
||||||
Application.logMessageReceived -= LogHandler;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool bUnityWaterFrist = false;
|
|
||||||
private void LogHandler(string condition, string stackTrace, LogType type)
|
|
||||||
{
|
|
||||||
if (condition.Contains("UnityWater") || stackTrace.Contains("UnityWater"))
|
|
||||||
{
|
|
||||||
if(bUnityWaterFrist)
|
|
||||||
return;
|
|
||||||
|
|
||||||
bUnityWaterFrist = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
LogData log = new LogData();
|
|
||||||
log.time = DateTime.Now.ToString("HH:mm:ss");
|
|
||||||
log.message = condition;
|
|
||||||
log.stackTrace = stackTrace;
|
|
||||||
|
|
||||||
if (type == LogType.Assert)
|
|
||||||
{
|
|
||||||
log.type = "Fatal";
|
|
||||||
_fatalLogCount += 1;
|
|
||||||
}
|
|
||||||
else if (type == LogType.Exception || type == LogType.Error)
|
|
||||||
{
|
|
||||||
log.type = "Error";
|
|
||||||
_errorLogCount += 1;
|
|
||||||
}
|
|
||||||
else if (type == LogType.Warning)
|
|
||||||
{
|
|
||||||
log.type = "Warning";
|
|
||||||
_warningLogCount += 1;
|
|
||||||
}
|
|
||||||
else if (type == LogType.Log)
|
|
||||||
{
|
|
||||||
log.type = "Info";
|
|
||||||
_infoLogCount += 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
_logInformations.Add(log);
|
|
||||||
|
|
||||||
if (_warningLogCount > 0)
|
|
||||||
{
|
|
||||||
_fpsColor = Color.yellow;
|
|
||||||
}
|
|
||||||
if (_errorLogCount > 0)
|
|
||||||
{
|
|
||||||
_fpsColor = Color.red;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnGUI()
|
|
||||||
{
|
|
||||||
if (AllowDebugging)
|
|
||||||
{
|
|
||||||
if (_expansion)
|
|
||||||
{
|
|
||||||
_windowRect = GUI.Window(0, _windowRect, ExpansionGUIWindow, "DEBUGGER");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_windowRect = GUI.Window(0, _windowRect, ShrinkGUIWindow, "DEBUGGER");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
private void ExpansionGUIWindow(int windowId)
|
|
||||||
{
|
|
||||||
GUI.DragWindow(new Rect(0, 0, 10000, 20));
|
|
||||||
|
|
||||||
#region title
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
GUI.contentColor = _fpsColor;
|
|
||||||
if (GUILayout.Button("FPS:" + _fps, GUILayout.Height(30)))
|
|
||||||
{
|
|
||||||
_expansion = false;
|
|
||||||
_windowRect.width = 100;
|
|
||||||
_windowRect.height = 60;
|
|
||||||
}
|
|
||||||
GUI.contentColor = (_debugType == DebugType.Console ? Color.white : Color.gray);
|
|
||||||
if (GUILayout.Button("Console", GUILayout.Height(30)))
|
|
||||||
{
|
|
||||||
_debugType = DebugType.Console;
|
|
||||||
}
|
|
||||||
GUI.contentColor = (_debugType == DebugType.Memory ? Color.white : Color.gray);
|
|
||||||
if (GUILayout.Button("Memory", GUILayout.Height(30)))
|
|
||||||
{
|
|
||||||
_debugType = DebugType.Memory;
|
|
||||||
}
|
|
||||||
GUI.contentColor = (_debugType == DebugType.System ? Color.white : Color.gray);
|
|
||||||
if (GUILayout.Button("System", GUILayout.Height(30)))
|
|
||||||
{
|
|
||||||
_debugType = DebugType.System;
|
|
||||||
}
|
|
||||||
GUI.contentColor = (_debugType == DebugType.Screen ? Color.white : Color.gray);
|
|
||||||
if (GUILayout.Button("Screen", GUILayout.Height(30)))
|
|
||||||
{
|
|
||||||
_debugType = DebugType.Screen;
|
|
||||||
}
|
|
||||||
GUI.contentColor = (_debugType == DebugType.Quality ? Color.white : Color.gray);
|
|
||||||
if (GUILayout.Button("Quality", GUILayout.Height(30)))
|
|
||||||
{
|
|
||||||
_debugType = DebugType.Quality;
|
|
||||||
}
|
|
||||||
GUI.contentColor = (_debugType == DebugType.Environment ? Color.white : Color.gray);
|
|
||||||
if (GUILayout.Button("Environment", GUILayout.Height(30)))
|
|
||||||
{
|
|
||||||
_debugType = DebugType.Environment;
|
|
||||||
}
|
|
||||||
GUI.contentColor = Color.white;
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region console
|
|
||||||
if (_debugType == DebugType.Console)
|
|
||||||
{
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
if (GUILayout.Button("Clear"))
|
|
||||||
{
|
|
||||||
_logInformations.Clear();
|
|
||||||
_fatalLogCount = 0;
|
|
||||||
_warningLogCount = 0;
|
|
||||||
_errorLogCount = 0;
|
|
||||||
_infoLogCount = 0;
|
|
||||||
_currentLogIndex = -1;
|
|
||||||
_fpsColor = Color.white;
|
|
||||||
}
|
|
||||||
GUI.contentColor = (_showInfoLog ? Color.white : Color.gray);
|
|
||||||
_showInfoLog = GUILayout.Toggle(_showInfoLog, "Info [" + _infoLogCount + "]");
|
|
||||||
GUI.contentColor = (_showWarningLog ? Color.white : Color.gray);
|
|
||||||
_showWarningLog = GUILayout.Toggle(_showWarningLog, "Warning [" + _warningLogCount + "]");
|
|
||||||
GUI.contentColor = (_showErrorLog ? Color.white : Color.gray);
|
|
||||||
_showErrorLog = GUILayout.Toggle(_showErrorLog, "Error [" + _errorLogCount + "]");
|
|
||||||
GUI.contentColor = (_showFatalLog ? Color.white : Color.gray);
|
|
||||||
_showFatalLog = GUILayout.Toggle(_showFatalLog, "Fatal [" + _fatalLogCount + "]");
|
|
||||||
GUI.contentColor = Color.white;
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
|
|
||||||
_scrollLogView = GUILayout.BeginScrollView(_scrollLogView, "Box", GUILayout.Height(165));
|
|
||||||
for (int i = 0; i < _logInformations.Count; i++)
|
|
||||||
{
|
|
||||||
bool show = false;
|
|
||||||
Color color = Color.white;
|
|
||||||
switch (_logInformations[i].type)
|
|
||||||
{
|
|
||||||
case "Fatal":
|
|
||||||
show = _showFatalLog;
|
|
||||||
color = Color.red;
|
|
||||||
break;
|
|
||||||
case "Error":
|
|
||||||
show = _showErrorLog;
|
|
||||||
color = Color.red;
|
|
||||||
break;
|
|
||||||
case "Info":
|
|
||||||
show = _showInfoLog;
|
|
||||||
color = Color.white;
|
|
||||||
break;
|
|
||||||
case "Warning":
|
|
||||||
show = _showWarningLog;
|
|
||||||
color = Color.yellow;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (show)
|
|
||||||
{
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
if (GUILayout.Toggle(_currentLogIndex == i, ""))
|
|
||||||
{
|
|
||||||
_currentLogIndex = i;
|
|
||||||
}
|
|
||||||
GUI.contentColor = color;
|
|
||||||
GUILayout.Label("[" + _logInformations[i].type + "] ");
|
|
||||||
GUILayout.Label("[" + _logInformations[i].time + "] ");
|
|
||||||
GUILayout.Label(_logInformations[i].message);
|
|
||||||
GUILayout.FlexibleSpace();
|
|
||||||
GUI.contentColor = Color.white;
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
GUILayout.EndScrollView();
|
|
||||||
|
|
||||||
_scrollCurrentLogView = GUILayout.BeginScrollView(_scrollCurrentLogView, "Box", GUILayout.Height(100));
|
|
||||||
if (_currentLogIndex != -1)
|
|
||||||
{
|
|
||||||
GUILayout.Label(_logInformations[_currentLogIndex].message + "\r\n\r\n" + _logInformations[_currentLogIndex].stackTrace);
|
|
||||||
}
|
|
||||||
GUILayout.EndScrollView();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region memory
|
|
||||||
else if (_debugType == DebugType.Memory)
|
|
||||||
{
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
GUILayout.Label("Memory Information");
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
|
|
||||||
GUILayout.BeginVertical("Box");
|
|
||||||
#if UNITY_5
|
|
||||||
GUILayout.Label("总内存:" + Profiler.GetTotalReservedMemory() / 1000000 + "MB");
|
|
||||||
GUILayout.Label("已占用内存:" + Profiler.GetTotalAllocatedMemory() / 1000000 + "MB");
|
|
||||||
GUILayout.Label("空闲中内存:" + Profiler.GetTotalUnusedReservedMemory() / 1000000 + "MB");
|
|
||||||
GUILayout.Label("总Mono堆内存:" + Profiler.GetMonoHeapSize() / 1000000 + "MB");
|
|
||||||
GUILayout.Label("已占用Mono堆内存:" + Profiler.GetMonoUsedSize() / 1000000 + "MB");
|
|
||||||
#endif
|
|
||||||
#if UNITY_7
|
|
||||||
GUILayout.Label("总内存:" + Profiler.GetTotalReservedMemoryLong() / 1000000 + "MB");
|
|
||||||
GUILayout.Label("已占用内存:" + Profiler.GetTotalAllocatedMemoryLong() / 1000000 + "MB");
|
|
||||||
GUILayout.Label("空闲中内存:" + Profiler.GetTotalUnusedReservedMemoryLong() / 1000000 + "MB");
|
|
||||||
GUILayout.Label("总Mono堆内存:" + Profiler.GetMonoHeapSizeLong() / 1000000 + "MB");
|
|
||||||
GUILayout.Label("已占用Mono堆内存:" + Profiler.GetMonoUsedSizeLong() / 1000000 + "MB");
|
|
||||||
#endif
|
|
||||||
GUILayout.EndVertical();
|
|
||||||
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
if (GUILayout.Button("卸载未使用的资源"))
|
|
||||||
{
|
|
||||||
Resources.UnloadUnusedAssets();
|
|
||||||
}
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
if (GUILayout.Button("使用GC垃圾回收"))
|
|
||||||
{
|
|
||||||
GC.Collect();
|
|
||||||
}
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region system
|
|
||||||
else if (_debugType == DebugType.System)
|
|
||||||
{
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
GUILayout.Label("System Information");
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
|
|
||||||
_scrollSystemView = GUILayout.BeginScrollView(_scrollSystemView, "Box");
|
|
||||||
GUILayout.Label("操作系统:" + SystemInfo.operatingSystem);
|
|
||||||
GUILayout.Label("系统内存:" + SystemInfo.systemMemorySize + "MB");
|
|
||||||
GUILayout.Label("处理器:" + SystemInfo.processorType);
|
|
||||||
GUILayout.Label("处理器数量:" + SystemInfo.processorCount);
|
|
||||||
GUILayout.Label("显卡:" + SystemInfo.graphicsDeviceName);
|
|
||||||
GUILayout.Label("显卡类型:" + SystemInfo.graphicsDeviceType);
|
|
||||||
GUILayout.Label("显存:" + SystemInfo.graphicsMemorySize + "MB");
|
|
||||||
GUILayout.Label("显卡标识:" + SystemInfo.graphicsDeviceID);
|
|
||||||
GUILayout.Label("显卡供应商:" + SystemInfo.graphicsDeviceVendor);
|
|
||||||
GUILayout.Label("显卡供应商标识码:" + SystemInfo.graphicsDeviceVendorID);
|
|
||||||
GUILayout.Label("设备模式:" + SystemInfo.deviceModel);
|
|
||||||
GUILayout.Label("设备名称:" + SystemInfo.deviceName);
|
|
||||||
GUILayout.Label("设备类型:" + SystemInfo.deviceType);
|
|
||||||
GUILayout.Label("设备标识:" + SystemInfo.deviceUniqueIdentifier);
|
|
||||||
GUILayout.EndScrollView();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region screen
|
|
||||||
else if (_debugType == DebugType.Screen)
|
|
||||||
{
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
GUILayout.Label("Screen Information");
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
|
|
||||||
GUILayout.BeginVertical("Box");
|
|
||||||
GUILayout.Label("DPI:" + Screen.dpi);
|
|
||||||
GUILayout.Label("分辨率:" + Screen.currentResolution.ToString());
|
|
||||||
GUILayout.EndVertical();
|
|
||||||
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
if (GUILayout.Button("全屏"))
|
|
||||||
{
|
|
||||||
Screen.SetResolution(Screen.currentResolution.width, Screen.currentResolution.height, !Screen.fullScreen);
|
|
||||||
}
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Quality
|
|
||||||
else if (_debugType == DebugType.Quality)
|
|
||||||
{
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
GUILayout.Label("Quality Information");
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
|
|
||||||
GUILayout.BeginVertical("Box");
|
|
||||||
string value = "";
|
|
||||||
if (QualitySettings.GetQualityLevel() == 0)
|
|
||||||
{
|
|
||||||
value = " [最低]";
|
|
||||||
}
|
|
||||||
else if (QualitySettings.GetQualityLevel() == QualitySettings.names.Length - 1)
|
|
||||||
{
|
|
||||||
value = " [最高]";
|
|
||||||
}
|
|
||||||
|
|
||||||
GUILayout.Label("图形质量:" + QualitySettings.names[QualitySettings.GetQualityLevel()] + value);
|
|
||||||
GUILayout.EndVertical();
|
|
||||||
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
if (GUILayout.Button("降低一级图形质量"))
|
|
||||||
{
|
|
||||||
QualitySettings.DecreaseLevel();
|
|
||||||
}
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
if (GUILayout.Button("提升一级图形质量"))
|
|
||||||
{
|
|
||||||
QualitySettings.IncreaseLevel();
|
|
||||||
}
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Environment
|
|
||||||
else if (_debugType == DebugType.Environment)
|
|
||||||
{
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
GUILayout.Label("Environment Information");
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
|
|
||||||
GUILayout.BeginVertical("Box");
|
|
||||||
GUILayout.Label("项目名称:" + Application.productName);
|
|
||||||
#if UNITY_5
|
|
||||||
GUILayout.Label("项目ID:" + Application.bundleIdentifier);
|
|
||||||
#endif
|
|
||||||
#if UNITY_7
|
|
||||||
GUILayout.Label("项目ID:" + Application.identifier);
|
|
||||||
#endif
|
|
||||||
GUILayout.Label("项目版本:" + Application.version);
|
|
||||||
GUILayout.Label("Unity版本:" + Application.unityVersion);
|
|
||||||
GUILayout.Label("公司名称:" + Application.companyName);
|
|
||||||
GUILayout.EndVertical();
|
|
||||||
|
|
||||||
GUILayout.BeginHorizontal();
|
|
||||||
if (GUILayout.Button("退出程序"))
|
|
||||||
{
|
|
||||||
Application.Quit();
|
|
||||||
}
|
|
||||||
GUILayout.EndHorizontal();
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
}
|
|
||||||
private void ShrinkGUIWindow(int windowId)
|
|
||||||
{
|
|
||||||
GUI.DragWindow(new Rect(0, 0, 10000, 20));
|
|
||||||
|
|
||||||
GUI.contentColor = _fpsColor;
|
|
||||||
if (GUILayout.Button("FPS:" + _fps, GUILayout.Width(80), GUILayout.Height(30)))
|
|
||||||
{
|
|
||||||
_expansion = true;
|
|
||||||
_windowRect.width = 600;
|
|
||||||
_windowRect.height = 360;
|
|
||||||
}
|
|
||||||
GUI.contentColor = Color.white;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public struct LogData
|
|
||||||
{
|
|
||||||
public string time;
|
|
||||||
public string type;
|
|
||||||
public string message;
|
|
||||||
public string stackTrace;
|
|
||||||
}
|
|
||||||
public enum DebugType
|
|
||||||
{
|
|
||||||
Console,
|
|
||||||
Memory,
|
|
||||||
System,
|
|
||||||
Screen,
|
|
||||||
Quality,
|
|
||||||
Environment
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c8eba012c3ef41a4bb9f3bfa27a8ea21
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,123 +0,0 @@
|
|||||||
using AxibugEmuOnline.Client.ClientCore;
|
|
||||||
using System;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Threading;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using UnityEditor;
|
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.SceneManagement;
|
|
||||||
using static AxibugEmuOnline.Client.HttpAPI;
|
|
||||||
|
|
||||||
|
|
||||||
public class PSVLauncher : MonoBehaviour
|
|
||||||
{
|
|
||||||
public UnityEngine.UI.Button btnInfo;
|
|
||||||
public UnityEngine.UI.Button InitAPP;
|
|
||||||
public UnityEngine.UI.Button btnHttpTest;
|
|
||||||
public UnityEngine.UI.Button btnHttpTest10;
|
|
||||||
public UnityEngine.UI.Button btnTaskTest;
|
|
||||||
public UnityEngine.UI.Button btnTaskTest2;
|
|
||||||
public UnityEngine.UI.Button btnPSVHUD;
|
|
||||||
public UnityEngine.UI.Button btnStart;
|
|
||||||
|
|
||||||
void Awake()
|
|
||||||
{
|
|
||||||
|
|
||||||
DontDestroyOnLoad(this);
|
|
||||||
|
|
||||||
btnInfo.onClick.AddListener(() =>
|
|
||||||
{
|
|
||||||
Debug.Log($"SystemInfo.deviceUniqueIdentifier ->" + SystemInfo.deviceUniqueIdentifier);
|
|
||||||
Debug.Log($"systemLanguage ->" + UnityEngine.PSVita.Utility.systemLanguage);
|
|
||||||
Debug.Log($"skuFlags ->" + UnityEngine.PSVita.Utility.skuFlags);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
InitAPP.onClick.AddListener(() =>
|
|
||||||
{
|
|
||||||
App.Init(new AxibugEmuOnline.Client.Initer());
|
|
||||||
});
|
|
||||||
btnHttpTest.onClick.AddListener(() => StartCoroutine(StartNetInit()));
|
|
||||||
btnHttpTest10.onClick.AddListener(() =>
|
|
||||||
{
|
|
||||||
StartCoroutine(StartNetInit());
|
|
||||||
StartCoroutine(StartNetInit());
|
|
||||||
StartCoroutine(StartNetInit());
|
|
||||||
StartCoroutine(StartNetInit());
|
|
||||||
StartCoroutine(StartNetInit());
|
|
||||||
StartCoroutine(StartNetInit());
|
|
||||||
StartCoroutine(StartNetInit());
|
|
||||||
StartCoroutine(StartNetInit());
|
|
||||||
StartCoroutine(StartNetInit());
|
|
||||||
StartCoroutine(StartNetInit());
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
btnTaskTest.onClick.AddListener(() =>
|
|
||||||
{
|
|
||||||
PSVThread.DoTask(() => DoWork(null));
|
|
||||||
|
|
||||||
//Task task = new Task(() =>
|
|
||||||
//{
|
|
||||||
// Thread.Sleep(1000);
|
|
||||||
// Debug.Log($"{Thread.CurrentThread.ManagedThreadId}->{1000}");
|
|
||||||
// Thread.Sleep(1000);
|
|
||||||
// Debug.Log($"{Thread.CurrentThread.ManagedThreadId}->{2000}");
|
|
||||||
//});
|
|
||||||
//task.Start();
|
|
||||||
});
|
|
||||||
|
|
||||||
btnPSVHUD.onClick.AddListener(() => {
|
|
||||||
UnityEngine.PSVita.Diagnostics.enableHUD = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
btnTaskTest2.onClick.AddListener(() =>
|
|
||||||
{
|
|
||||||
ThreadPool.QueueUserWorkItem(DoWork);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
btnStart.onClick.AddListener(()
|
|
||||||
=>
|
|
||||||
{
|
|
||||||
SceneManager.LoadScene("AxibugEmuOnline.Client");
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
static void DoWork(object state)
|
|
||||||
{
|
|
||||||
// 这里是线程池中的工作代码
|
|
||||||
Debug.Log($"thread id: {Thread.CurrentThread.ManagedThreadId} start");
|
|
||||||
// 模拟一些工作
|
|
||||||
Thread.Sleep(2000);
|
|
||||||
Debug.Log($"thread id: {Thread.CurrentThread.ManagedThreadId} end");
|
|
||||||
}
|
|
||||||
|
|
||||||
static IEnumerator StartNetInit()
|
|
||||||
{
|
|
||||||
int platform = 0;
|
|
||||||
AxiHttpProxy.SendWebRequestProxy request = AxiHttpProxy.Get($"{"http://emu.axibug.com/api"}/CheckStandInfo?platform={platform}&version={Application.version}");
|
|
||||||
yield return request.SendWebRequest;
|
|
||||||
if (!request.downloadHandler.isDone)
|
|
||||||
yield break;
|
|
||||||
|
|
||||||
if (request.downloadHandler.Err != null)
|
|
||||||
{
|
|
||||||
Debug.LogError(request.downloadHandler.Err);
|
|
||||||
yield break;
|
|
||||||
}
|
|
||||||
|
|
||||||
AxiHttpProxy.ShowAxiHttpDebugInfo(request.downloadHandler);
|
|
||||||
Resp_CheckStandInfo resp = JsonUtility.FromJson<Resp_CheckStandInfo>(request.downloadHandler.text);
|
|
||||||
|
|
||||||
//需要更新
|
|
||||||
if (resp.needUpdateClient == 1)
|
|
||||||
{
|
|
||||||
//TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
yield return null;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f98de16d25b8f5148866d0c02a514502
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 292b282919a768c4fa6b8adb858daa95
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,26 +0,0 @@
|
|||||||
#if UNITY_EDITOR
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEditor;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[CreateAssetMenu(fileName = "CrossMapCfg", menuName = "Tools/AxiPrefabCachec", order = 0)]
|
|
||||||
public class AxiPrefabCache : ScriptableObject
|
|
||||||
{
|
|
||||||
public List<AxiPrefabCache_Com2GUID> caches = new List<AxiPrefabCache_Com2GUID>();
|
|
||||||
}
|
|
||||||
|
|
||||||
[Serializable]
|
|
||||||
public class AxiPrefabCache_Com2GUID
|
|
||||||
{
|
|
||||||
public string SrcFullName;
|
|
||||||
public string SrcName;
|
|
||||||
public string GUID;
|
|
||||||
public string ToName;
|
|
||||||
public string ToPATH;
|
|
||||||
public string ToGUID;
|
|
||||||
public MonoScript monoScript;
|
|
||||||
}
|
|
||||||
#endif
|
|
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 47ae96bfd5393694da28c22ab2ccfb7c
|
|
@ -1,416 +0,0 @@
|
|||||||
#if UNITY_EDITOR
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using UnityEditor;
|
|
||||||
using UnityEditor.SceneManagement;
|
|
||||||
using UnityEngine;
|
|
||||||
|
|
||||||
public class AxiProjectTools : EditorWindow
|
|
||||||
{
|
|
||||||
static string cachecfgPath = "Assets/AxiComToolCache.asset";
|
|
||||||
static string toolSenceName = "AxiProjectTools";
|
|
||||||
static string outCsDir = Application.dataPath + "/AxiCom/";
|
|
||||||
static Dictionary<string, AxiPrefabCache_Com2GUID> ComType2GUID = new Dictionary<string, AxiPrefabCache_Com2GUID>();
|
|
||||||
|
|
||||||
static void GoTAxiProjectToolsSence()
|
|
||||||
{
|
|
||||||
string[] sceneGuids = AssetDatabase.FindAssets("t:scene");
|
|
||||||
foreach (string guid in sceneGuids)
|
|
||||||
{
|
|
||||||
string path = AssetDatabase.GUIDToAssetPath(guid);
|
|
||||||
if (path.Contains(toolSenceName))
|
|
||||||
{
|
|
||||||
EditorSceneManager.OpenScene(path);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[MenuItem("Axibug移植工具/[1]采集所有预制体和场景下的UGUI组件")]
|
|
||||||
public static void Part1()
|
|
||||||
{
|
|
||||||
GoTAxiProjectToolsSence();
|
|
||||||
ComType2GUID.Clear();
|
|
||||||
string[] sceneGuids = AssetDatabase.FindAssets("t:scene");
|
|
||||||
foreach (string guid in sceneGuids)
|
|
||||||
{
|
|
||||||
string path = AssetDatabase.GUIDToAssetPath(guid);
|
|
||||||
if (path.Contains(toolSenceName))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
EditorSceneManager.OpenScene(path);
|
|
||||||
|
|
||||||
// 创建一个列表来存储根节点
|
|
||||||
List<GameObject> rootNodes = new List<GameObject>();
|
|
||||||
|
|
||||||
// 遍历场景中的所有对象
|
|
||||||
GameObject[] allObjects = FindObjectsOfType<GameObject>();
|
|
||||||
foreach (GameObject obj in allObjects)
|
|
||||||
{
|
|
||||||
// 检查对象是否有父对象
|
|
||||||
if (obj.transform.parent == null)
|
|
||||||
{
|
|
||||||
// 如果没有父对象,则它是一个根节点
|
|
||||||
rootNodes.Add(obj);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var node in rootNodes)
|
|
||||||
LoopPrefabNode(path, node, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
string[] prefabGuids = AssetDatabase.FindAssets("t:Prefab");
|
|
||||||
foreach (string guid in prefabGuids)
|
|
||||||
{
|
|
||||||
string path = AssetDatabase.GUIDToAssetPath(guid);
|
|
||||||
GetPrefab(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
AxiPrefabCache cache = ScriptableObject.CreateInstance<AxiPrefabCache>();
|
|
||||||
foreach (var data in ComType2GUID)
|
|
||||||
cache.caches.Add(data.Value);
|
|
||||||
AssetDatabase.CreateAsset(cache, cachecfgPath);
|
|
||||||
AssetDatabase.SaveAssets();
|
|
||||||
AssetDatabase.Refresh();
|
|
||||||
GoTAxiProjectToolsSence();
|
|
||||||
Debug.Log("<Color=#FFF333>处理完毕 [1]采集所有预制体和场景下的UGUI组件</color>");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void GetPrefab(string path)
|
|
||||||
{
|
|
||||||
GameObject prefab = AssetDatabase.LoadAssetAtPath<GameObject>(path);
|
|
||||||
LoopPrefabNode(path, prefab.gameObject, 0);
|
|
||||||
}
|
|
||||||
static void LoopPrefabNode(string rootPath, GameObject trans, int depth)
|
|
||||||
{
|
|
||||||
string nodename = $"{rootPath}>{trans.name}";
|
|
||||||
#if UNITY_2018_4_OR_NEWER
|
|
||||||
GameObject prefabRoot = trans.gameObject;
|
|
||||||
int comCount = prefabRoot.GetComponentCount();
|
|
||||||
for (int i = 0; i < comCount; i++)
|
|
||||||
{
|
|
||||||
var com = prefabRoot.GetComponentAtIndex(i);
|
|
||||||
if (com == null)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
MonoBehaviour monoCom = com as MonoBehaviour;
|
|
||||||
if (monoCom == null)
|
|
||||||
continue;
|
|
||||||
Type monoType = monoCom.GetType();
|
|
||||||
if (!monoType.Assembly.FullName.Contains("UnityEngine.UI"))
|
|
||||||
continue;
|
|
||||||
// 获取MonoScript资源
|
|
||||||
MonoScript monoScript = MonoScript.FromMonoBehaviour(monoCom);
|
|
||||||
if (monoScript != null)
|
|
||||||
{
|
|
||||||
// 获取MonoScript资源的GUID
|
|
||||||
string guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(monoScript));
|
|
||||||
Debug.Log($"{nodename} | <color=#FFF333>[{monoType.Name}]</color> <color=#FF0000>{guid}</color><color=#00FF00>({monoType.FullName})</color>");
|
|
||||||
ComType2GUID[monoType.FullName] =
|
|
||||||
new AxiPrefabCache_Com2GUID()
|
|
||||||
{
|
|
||||||
SrcFullName = monoType.FullName,
|
|
||||||
SrcName = monoType.Name,
|
|
||||||
GUID = guid,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Debug.LogError("!!!! 没得");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//遍历
|
|
||||||
foreach (Transform child in trans.transform)
|
|
||||||
LoopPrefabNode(nodename, child.gameObject, depth + 1);
|
|
||||||
#else
|
|
||||||
Debug.Log("低版本不要执行本函数");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
[MenuItem("Axibug移植工具/[2]生成中间脚本代码")]
|
|
||||||
public static void Part2()
|
|
||||||
{
|
|
||||||
if (UnityEngine.Windows.Directory.Exists(outCsDir))
|
|
||||||
UnityEngine.Windows.Directory.Delete(outCsDir);
|
|
||||||
Directory.CreateDirectory(outCsDir);
|
|
||||||
AxiPrefabCache cache = AssetDatabase.LoadAssetAtPath<AxiPrefabCache>(cachecfgPath);
|
|
||||||
foreach (var data in cache.caches)
|
|
||||||
{
|
|
||||||
string toName = "Axi" + data.SrcName;
|
|
||||||
string toPath = outCsDir + toName + ".cs";
|
|
||||||
string codeStr = "namespace AxibugCom { public class " + toName + " : " + data.SrcFullName + " {} }";
|
|
||||||
try
|
|
||||||
{
|
|
||||||
System.IO.File.WriteAllText(toPath, codeStr);
|
|
||||||
data.ToName = toName;
|
|
||||||
data.ToPATH = toPath;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Debug.LogError("写入失败" + ex.ToString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Debug.Log("写入完毕");
|
|
||||||
AssetDatabase.SaveAssets();
|
|
||||||
AssetDatabase.Refresh();
|
|
||||||
Debug.Log("<Color=#FFF333>处理完毕 [2]生成中间脚本代码</color>");
|
|
||||||
}
|
|
||||||
|
|
||||||
[MenuItem("Axibug移植工具/[3]收集生成的脚本")]
|
|
||||||
public static void Part3()
|
|
||||||
{
|
|
||||||
AxiPrefabCache cache = AssetDatabase.LoadAssetAtPath<AxiPrefabCache>(cachecfgPath);
|
|
||||||
List<MonoScript> allMonoScripts = FindAllAssetsOfType<MonoScript>();
|
|
||||||
foreach (var data in cache.caches)
|
|
||||||
{
|
|
||||||
MonoScript monoScript = allMonoScripts.FirstOrDefault(w => w.name == data.ToName);
|
|
||||||
if (monoScript == null)
|
|
||||||
{
|
|
||||||
Debug.LogError("没找到" + data.ToName);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
string guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(monoScript));
|
|
||||||
data.ToGUID = guid;
|
|
||||||
data.monoScript = monoScript;
|
|
||||||
}
|
|
||||||
Debug.Log("写入完毕");
|
|
||||||
AssetDatabase.SaveAssets();
|
|
||||||
AssetDatabase.Refresh();
|
|
||||||
Debug.Log("<Color=#FFF333>处理完毕 [3]收集生成的脚本</color>");
|
|
||||||
}
|
|
||||||
|
|
||||||
static List<T> FindAllAssetsOfType<T>() where T : UnityEngine.Object
|
|
||||||
{
|
|
||||||
List<T> assets = new List<T>();
|
|
||||||
|
|
||||||
string[] allGuids = AssetDatabase.FindAssets("");
|
|
||||||
foreach (string guid in allGuids)
|
|
||||||
{
|
|
||||||
string path = AssetDatabase.GUIDToAssetPath(guid);
|
|
||||||
if (path.EndsWith(".cs") || path.EndsWith(".js") || path.EndsWith(".boo")) // Unity支持多种脚本语言,但现代Unity主要使用C#
|
|
||||||
{
|
|
||||||
T asset = AssetDatabase.LoadAssetAtPath<T>(path);
|
|
||||||
if (asset != null)
|
|
||||||
{
|
|
||||||
assets.Add(asset);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return assets;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[MenuItem("Axibug移植工具/[4]替换所有预制体和场景中的组件")]
|
|
||||||
public static void Part4()
|
|
||||||
{
|
|
||||||
AxiPrefabCache cache = AssetDatabase.LoadAssetAtPath<AxiPrefabCache>(cachecfgPath);
|
|
||||||
Dictionary<string, string> tempReplaceDict = new Dictionary<string, string>();
|
|
||||||
foreach (var data in cache.caches)
|
|
||||||
{
|
|
||||||
tempReplaceDict[data.GUID] = data.ToGUID;
|
|
||||||
}
|
|
||||||
ProcessAllPrefabs("*.prefab", tempReplaceDict);
|
|
||||||
ProcessAllPrefabs("*.unity", tempReplaceDict);
|
|
||||||
ProcessAllPrefabs("*.anim", tempReplaceDict);
|
|
||||||
AssetDatabase.SaveAssets();
|
|
||||||
AssetDatabase.Refresh();
|
|
||||||
Debug.Log("<Color=#FFF333>处理完毕 [4]替换所有预制体和场景中的组件</color>");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ProcessAllPrefabs(string form, Dictionary<string, string> tempReplaceDict, bool reverse = false)
|
|
||||||
{
|
|
||||||
List<GameObject> prefabs = new List<GameObject>();
|
|
||||||
var resourcesPath = Application.dataPath;
|
|
||||||
var absolutePaths = Directory.GetFiles(resourcesPath, form, SearchOption.AllDirectories);
|
|
||||||
for (int i = 0; i < absolutePaths.Length; i++)
|
|
||||||
{
|
|
||||||
Debug.Log("prefab name: " + absolutePaths[i]);
|
|
||||||
foreach (var VARIABLE in tempReplaceDict)
|
|
||||||
{
|
|
||||||
string oldValue = reverse ? VARIABLE.Value : VARIABLE.Key;
|
|
||||||
string newValue = reverse ? VARIABLE.Key : VARIABLE.Value;
|
|
||||||
ReplaceValue(absolutePaths[i], oldValue, newValue);
|
|
||||||
}
|
|
||||||
EditorUtility.DisplayProgressBar("处理预制体……", "处理预制体中……", (float)i / absolutePaths.Length);
|
|
||||||
}
|
|
||||||
EditorUtility.ClearProgressBar();
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 替换值
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="strFilePath">文件路径</param>
|
|
||||||
static void ReplaceValue(string strFilePath, string oldLine, string newLine)
|
|
||||||
{
|
|
||||||
if (File.Exists(strFilePath))
|
|
||||||
{
|
|
||||||
string[] lines = File.ReadAllLines(strFilePath);
|
|
||||||
for (int i = 0; i < lines.Length; i++)
|
|
||||||
{
|
|
||||||
lines[i] = lines[i].Replace(oldLine, newLine);
|
|
||||||
}
|
|
||||||
File.WriteAllLines(strFilePath, lines);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[MenuItem("Axibug移植工具/[5]UnPack所有嵌套预制体和场景中的预制体")]
|
|
||||||
public static void UnpackPrefabs()
|
|
||||||
{
|
|
||||||
|
|
||||||
#if UNITY_2018_4_OR_NEWER
|
|
||||||
GoTAxiProjectToolsSence();
|
|
||||||
string[] allAssetPaths = AssetDatabase.GetAllAssetPaths();
|
|
||||||
int prefabCount = 0;
|
|
||||||
|
|
||||||
foreach (string path in allAssetPaths)
|
|
||||||
{
|
|
||||||
if (Path.GetExtension(path).Equals(".prefab"))
|
|
||||||
{
|
|
||||||
Debug.Log($"Unpacking {path}");
|
|
||||||
UnpackPrefab(path);
|
|
||||||
prefabCount++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Debug.Log($"{prefabCount}个预制体Unpack");
|
|
||||||
|
|
||||||
string[] sceneGuids = AssetDatabase.FindAssets("t:scene");
|
|
||||||
foreach (string guid in sceneGuids)
|
|
||||||
{
|
|
||||||
string path = AssetDatabase.GUIDToAssetPath(guid);
|
|
||||||
if (path.Contains(toolSenceName))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
EditorSceneManager.OpenScene(path);
|
|
||||||
Scene currentScene = SceneManager.GetActiveScene();
|
|
||||||
GameObject[] rootObjects = currentScene.GetRootGameObjects();
|
|
||||||
foreach (GameObject rootObj in rootObjects)
|
|
||||||
{
|
|
||||||
// 遍历场景中的所有对象
|
|
||||||
TraverseHierarchy(rootObj);
|
|
||||||
}
|
|
||||||
// Save the scene // 获取当前打开的场景
|
|
||||||
currentScene = EditorSceneManager.GetActiveScene();
|
|
||||||
// 保存场景到文件(默认路径和名称)
|
|
||||||
bool success = EditorSceneManager.SaveScene(currentScene, currentScene.path);
|
|
||||||
|
|
||||||
Debug.Log($"{currentScene.name}场景中 所有物体Unpack");
|
|
||||||
}
|
|
||||||
|
|
||||||
GoTAxiProjectToolsSence();
|
|
||||||
Debug.Log("<Color=#FFF333>处理完毕 [5]UnPack所有预制体</color>");
|
|
||||||
#else
|
|
||||||
Debug.Log("低版本不要执行本函数");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static void UnpackPrefab(string prefabPath)
|
|
||||||
{
|
|
||||||
#if UNITY_2018_4_OR_NEWER
|
|
||||||
GameObject prefabInstance = AssetDatabase.LoadAssetAtPath<GameObject>(prefabPath);
|
|
||||||
if (prefabInstance == null)
|
|
||||||
{
|
|
||||||
Debug.LogError($"Failed to load prefab at path: {prefabPath}");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var obj = GameObject.Instantiate(prefabInstance, null);
|
|
||||||
TraverseHierarchy(obj);
|
|
||||||
PrefabUtility.SaveAsPrefabAsset(obj, prefabPath);
|
|
||||||
GameObject.DestroyImmediate(obj);
|
|
||||||
#else
|
|
||||||
Debug.Log("低版本不要执行本函数");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
static void TraverseHierarchy(GameObject obj)
|
|
||||||
{
|
|
||||||
#if UNITY_2018_4_OR_NEWER
|
|
||||||
// 检查该对象是否是预制体的实例
|
|
||||||
if (PrefabUtility.IsPartOfPrefabInstance(obj))
|
|
||||||
{
|
|
||||||
// 将预制体实例转换为普通游戏对象
|
|
||||||
PrefabUtility.UnpackPrefabInstance(obj, PrefabUnpackMode.Completely, InteractionMode.AutomatedAction);
|
|
||||||
Debug.Log("Prefab instance converted to game object: " + obj.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 递归遍历子对象
|
|
||||||
for (int i = 0; i < obj.transform.childCount; i++)
|
|
||||||
{
|
|
||||||
TraverseHierarchy(obj.transform.GetChild(i).gameObject);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
Debug.Log("低版本不要执行本函数");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
[MenuItem("Axibug移植工具/[6]修复Sprite")]
|
|
||||||
public static void FixMultipleMaterialSprites()
|
|
||||||
{
|
|
||||||
string[] guids = AssetDatabase.FindAssets("t:sprite");
|
|
||||||
List<Sprite> spritesToFix = new List<Sprite>();
|
|
||||||
|
|
||||||
foreach (string guid in guids)
|
|
||||||
{
|
|
||||||
string path = AssetDatabase.GUIDToAssetPath(guid);
|
|
||||||
Sprite sprite = AssetDatabase.LoadAssetAtPath<Sprite>(path);
|
|
||||||
|
|
||||||
// 检查是否有多个材质
|
|
||||||
if (IsUsingMultipleMaterials(sprite))
|
|
||||||
{
|
|
||||||
spritesToFix.Add(sprite);
|
|
||||||
Debug.Log("Found sprite with multiple materials: " + path);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修复每个找到的Sprite
|
|
||||||
foreach (var sprite in spritesToFix)
|
|
||||||
{
|
|
||||||
FixSprite(sprite);
|
|
||||||
}
|
|
||||||
|
|
||||||
AssetDatabase.SaveAssets();
|
|
||||||
AssetDatabase.Refresh();
|
|
||||||
Debug.Log("<Color=#FFF333>处理完毕 [6]修复Sprite</color>");
|
|
||||||
}
|
|
||||||
|
|
||||||
private static bool IsUsingMultipleMaterials(Sprite sprite)
|
|
||||||
{
|
|
||||||
if (sprite == null) return false;
|
|
||||||
|
|
||||||
// 获取精灵的材质
|
|
||||||
var textureImporter = AssetImporter.GetAtPath(AssetDatabase.GetAssetPath(sprite)) as TextureImporter;
|
|
||||||
|
|
||||||
return textureImporter != null && textureImporter.spriteImportMode == SpriteImportMode.Multiple;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void FixSprite(Sprite sprite)
|
|
||||||
{
|
|
||||||
// 获取Sprite的路径
|
|
||||||
string path = AssetDatabase.GetAssetPath(sprite);
|
|
||||||
var textureImporter = AssetImporter.GetAtPath(path) as TextureImporter;
|
|
||||||
|
|
||||||
if (textureImporter != null)
|
|
||||||
{
|
|
||||||
// 保存当前切割信息
|
|
||||||
SpriteMetaData[] originalMetaData = textureImporter.spritesheet;
|
|
||||||
|
|
||||||
// 临时禁用Sprite导入
|
|
||||||
textureImporter.spriteImportMode = SpriteImportMode.None;
|
|
||||||
textureImporter.SaveAndReimport();
|
|
||||||
|
|
||||||
// 重新启用Sprite导入并保持原样切割参数
|
|
||||||
textureImporter.spriteImportMode = SpriteImportMode.Multiple;
|
|
||||||
textureImporter.spritesheet = originalMetaData; // 恢复原来的切割信息
|
|
||||||
|
|
||||||
// 重新导入以应用更改
|
|
||||||
textureImporter.SaveAndReimport();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
@ -1,2 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 01c95f5e03a338749b54784eb6420d04
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 11a59d59d152c214bb99a09f4d795c21
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,316 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!29 &1
|
|
||||||
OcclusionCullingSettings:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_OcclusionBakeSettings:
|
|
||||||
smallestOccluder: 5
|
|
||||||
smallestHole: 0.25
|
|
||||||
backfaceThreshold: 100
|
|
||||||
m_SceneGUID: 00000000000000000000000000000000
|
|
||||||
m_OcclusionCullingData: {fileID: 0}
|
|
||||||
--- !u!104 &2
|
|
||||||
RenderSettings:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 10
|
|
||||||
m_Fog: 0
|
|
||||||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1}
|
|
||||||
m_FogMode: 3
|
|
||||||
m_FogDensity: 0.01
|
|
||||||
m_LinearFogStart: 0
|
|
||||||
m_LinearFogEnd: 300
|
|
||||||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1}
|
|
||||||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1}
|
|
||||||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1}
|
|
||||||
m_AmbientIntensity: 1
|
|
||||||
m_AmbientMode: 0
|
|
||||||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1}
|
|
||||||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0}
|
|
||||||
m_HaloStrength: 0.5
|
|
||||||
m_FlareStrength: 1
|
|
||||||
m_FlareFadeSpeed: 3
|
|
||||||
m_HaloTexture: {fileID: 0}
|
|
||||||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0}
|
|
||||||
m_DefaultReflectionMode: 0
|
|
||||||
m_DefaultReflectionResolution: 128
|
|
||||||
m_ReflectionBounces: 1
|
|
||||||
m_ReflectionIntensity: 1
|
|
||||||
m_CustomReflection: {fileID: 0}
|
|
||||||
m_Sun: {fileID: 0}
|
|
||||||
m_UseRadianceAmbientProbe: 0
|
|
||||||
--- !u!157 &3
|
|
||||||
LightmapSettings:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 13
|
|
||||||
m_BakeOnSceneLoad: 0
|
|
||||||
m_GISettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_BounceScale: 1
|
|
||||||
m_IndirectOutputScale: 1
|
|
||||||
m_AlbedoBoost: 1
|
|
||||||
m_EnvironmentLightingMode: 0
|
|
||||||
m_EnableBakedLightmaps: 1
|
|
||||||
m_EnableRealtimeLightmaps: 0
|
|
||||||
m_LightmapEditorSettings:
|
|
||||||
serializedVersion: 12
|
|
||||||
m_Resolution: 2
|
|
||||||
m_BakeResolution: 40
|
|
||||||
m_AtlasSize: 1024
|
|
||||||
m_AO: 0
|
|
||||||
m_AOMaxDistance: 1
|
|
||||||
m_CompAOExponent: 1
|
|
||||||
m_CompAOExponentDirect: 0
|
|
||||||
m_ExtractAmbientOcclusion: 0
|
|
||||||
m_Padding: 2
|
|
||||||
m_LightmapParameters: {fileID: 0}
|
|
||||||
m_LightmapsBakeMode: 1
|
|
||||||
m_TextureCompression: 1
|
|
||||||
m_ReflectionCompression: 2
|
|
||||||
m_MixedBakeMode: 2
|
|
||||||
m_BakeBackend: 1
|
|
||||||
m_PVRSampling: 1
|
|
||||||
m_PVRDirectSampleCount: 32
|
|
||||||
m_PVRSampleCount: 512
|
|
||||||
m_PVRBounces: 2
|
|
||||||
m_PVREnvironmentSampleCount: 256
|
|
||||||
m_PVREnvironmentReferencePointCount: 2048
|
|
||||||
m_PVRFilteringMode: 1
|
|
||||||
m_PVRDenoiserTypeDirect: 1
|
|
||||||
m_PVRDenoiserTypeIndirect: 1
|
|
||||||
m_PVRDenoiserTypeAO: 1
|
|
||||||
m_PVRFilterTypeDirect: 0
|
|
||||||
m_PVRFilterTypeIndirect: 0
|
|
||||||
m_PVRFilterTypeAO: 0
|
|
||||||
m_PVREnvironmentMIS: 1
|
|
||||||
m_PVRCulling: 1
|
|
||||||
m_PVRFilteringGaussRadiusDirect: 1
|
|
||||||
m_PVRFilteringGaussRadiusIndirect: 1
|
|
||||||
m_PVRFilteringGaussRadiusAO: 1
|
|
||||||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5
|
|
||||||
m_PVRFilteringAtrousPositionSigmaIndirect: 2
|
|
||||||
m_PVRFilteringAtrousPositionSigmaAO: 1
|
|
||||||
m_ExportTrainingData: 0
|
|
||||||
m_TrainingDataDestination: TrainingData
|
|
||||||
m_LightProbeSampleCountMultiplier: 4
|
|
||||||
m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0}
|
|
||||||
m_LightingSettings: {fileID: 0}
|
|
||||||
--- !u!196 &4
|
|
||||||
NavMeshSettings:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_BuildSettings:
|
|
||||||
serializedVersion: 3
|
|
||||||
agentTypeID: 0
|
|
||||||
agentRadius: 0.5
|
|
||||||
agentHeight: 2
|
|
||||||
agentSlope: 45
|
|
||||||
agentClimb: 0.4
|
|
||||||
ledgeDropHeight: 0
|
|
||||||
maxJumpAcrossDistance: 0
|
|
||||||
minRegionArea: 2
|
|
||||||
manualCellSize: 0
|
|
||||||
cellSize: 0.16666667
|
|
||||||
manualTileSize: 0
|
|
||||||
tileSize: 256
|
|
||||||
buildHeightMesh: 0
|
|
||||||
maxJobWorkers: 0
|
|
||||||
preserveTilesOutsideBounds: 0
|
|
||||||
debug:
|
|
||||||
m_Flags: 0
|
|
||||||
m_NavMeshData: {fileID: 0}
|
|
||||||
--- !u!1 &1760378052
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 1760378055}
|
|
||||||
- component: {fileID: 1760378054}
|
|
||||||
- component: {fileID: 1760378053}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: Main Camera
|
|
||||||
m_TagString: MainCamera
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!81 &1760378053
|
|
||||||
AudioListener:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1760378052}
|
|
||||||
m_Enabled: 1
|
|
||||||
--- !u!20 &1760378054
|
|
||||||
Camera:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1760378052}
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 2
|
|
||||||
m_ClearFlags: 1
|
|
||||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
|
||||||
m_projectionMatrixMode: 1
|
|
||||||
m_GateFitMode: 2
|
|
||||||
m_FOVAxisMode: 0
|
|
||||||
m_Iso: 200
|
|
||||||
m_ShutterSpeed: 0.005
|
|
||||||
m_Aperture: 16
|
|
||||||
m_FocusDistance: 10
|
|
||||||
m_FocalLength: 50
|
|
||||||
m_BladeCount: 5
|
|
||||||
m_Curvature: {x: 2, y: 11}
|
|
||||||
m_BarrelClipping: 0.25
|
|
||||||
m_Anamorphism: 0
|
|
||||||
m_SensorSize: {x: 36, y: 24}
|
|
||||||
m_LensShift: {x: 0, y: 0}
|
|
||||||
m_NormalizedViewPortRect:
|
|
||||||
serializedVersion: 2
|
|
||||||
x: 0
|
|
||||||
y: 0
|
|
||||||
width: 1
|
|
||||||
height: 1
|
|
||||||
near clip plane: 0.3
|
|
||||||
far clip plane: 1000
|
|
||||||
field of view: 60
|
|
||||||
orthographic: 0
|
|
||||||
orthographic size: 5
|
|
||||||
m_Depth: -1
|
|
||||||
m_CullingMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_RenderingPath: -1
|
|
||||||
m_TargetTexture: {fileID: 0}
|
|
||||||
m_TargetDisplay: 0
|
|
||||||
m_TargetEye: 3
|
|
||||||
m_HDR: 1
|
|
||||||
m_AllowMSAA: 1
|
|
||||||
m_AllowDynamicResolution: 0
|
|
||||||
m_ForceIntoRT: 0
|
|
||||||
m_OcclusionCulling: 1
|
|
||||||
m_StereoConvergence: 10
|
|
||||||
m_StereoSeparation: 0.022
|
|
||||||
--- !u!4 &1760378055
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1760378052}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 1, z: -10}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
--- !u!1 &1948026923
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 1948026925}
|
|
||||||
- component: {fileID: 1948026924}
|
|
||||||
m_Layer: 0
|
|
||||||
m_Name: Directional Light
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!108 &1948026924
|
|
||||||
Light:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1948026923}
|
|
||||||
m_Enabled: 1
|
|
||||||
serializedVersion: 11
|
|
||||||
m_Type: 1
|
|
||||||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
|
||||||
m_Intensity: 1
|
|
||||||
m_Range: 10
|
|
||||||
m_SpotAngle: 30
|
|
||||||
m_InnerSpotAngle: 21.80208
|
|
||||||
m_CookieSize: 10
|
|
||||||
m_Shadows:
|
|
||||||
m_Type: 2
|
|
||||||
m_Resolution: -1
|
|
||||||
m_CustomResolution: -1
|
|
||||||
m_Strength: 1
|
|
||||||
m_Bias: 0.05
|
|
||||||
m_NormalBias: 0.4
|
|
||||||
m_NearPlane: 0.2
|
|
||||||
m_CullingMatrixOverride:
|
|
||||||
e00: 1
|
|
||||||
e01: 0
|
|
||||||
e02: 0
|
|
||||||
e03: 0
|
|
||||||
e10: 0
|
|
||||||
e11: 1
|
|
||||||
e12: 0
|
|
||||||
e13: 0
|
|
||||||
e20: 0
|
|
||||||
e21: 0
|
|
||||||
e22: 1
|
|
||||||
e23: 0
|
|
||||||
e30: 0
|
|
||||||
e31: 0
|
|
||||||
e32: 0
|
|
||||||
e33: 1
|
|
||||||
m_UseCullingMatrixOverride: 0
|
|
||||||
m_Cookie: {fileID: 0}
|
|
||||||
m_DrawHalo: 0
|
|
||||||
m_Flare: {fileID: 0}
|
|
||||||
m_RenderMode: 0
|
|
||||||
m_CullingMask:
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Bits: 4294967295
|
|
||||||
m_RenderingLayerMask: 1
|
|
||||||
m_Lightmapping: 4
|
|
||||||
m_LightShadowCasterMode: 0
|
|
||||||
m_AreaSize: {x: 1, y: 1}
|
|
||||||
m_BounceIntensity: 1
|
|
||||||
m_ColorTemperature: 6570
|
|
||||||
m_UseColorTemperature: 0
|
|
||||||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
m_UseBoundingSphereOverride: 0
|
|
||||||
m_UseViewFrustumForShadowCasterCull: 1
|
|
||||||
m_ForceVisible: 0
|
|
||||||
m_ShadowRadius: 0
|
|
||||||
m_ShadowAngle: 0
|
|
||||||
m_LightUnit: 1
|
|
||||||
m_LuxAtDistance: 1
|
|
||||||
m_EnableSpotReflector: 1
|
|
||||||
--- !u!4 &1948026925
|
|
||||||
Transform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1948026923}
|
|
||||||
serializedVersion: 2
|
|
||||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
|
||||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_ConstrainProportionsScale: 0
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 0}
|
|
||||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
|
||||||
--- !u!1660057539 &9223372036854775807
|
|
||||||
SceneRoots:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_Roots:
|
|
||||||
- {fileID: 1760378055}
|
|
||||||
- {fileID: 1948026925}
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: fd41663b74cbfcc45a028bc891a8c4fc
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "AxibugEmuOnline.Editor",
|
|
||||||
"rootNamespace": "AxibugEmuOnline.Editors",
|
|
||||||
"references": [
|
|
||||||
"AxibugEmuOnline.Client"
|
|
||||||
],
|
|
||||||
"includePlatforms": [
|
|
||||||
"Editor"
|
|
||||||
],
|
|
||||||
"excludePlatforms": [],
|
|
||||||
"allowUnsafeCode": false,
|
|
||||||
"overrideReferences": false,
|
|
||||||
"precompiledReferences": [],
|
|
||||||
"autoReferenced": true,
|
|
||||||
"defineConstraints": [],
|
|
||||||
"versionDefines": [],
|
|
||||||
"noEngineReferences": false
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a37804d4d608e1e4bb8204f442ab0e60
|
|
||||||
AssemblyDefinitionImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,50 +0,0 @@
|
|||||||
using AxibugEmuOnline.Client;
|
|
||||||
using UnityEditor;
|
|
||||||
using UnityEngine;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace AxibugEmuOnline.Editors
|
|
||||||
{
|
|
||||||
[CustomEditor(typeof(CommandDispatcher))]
|
|
||||||
public class CommandDispatcherEditor : Editor
|
|
||||||
{
|
|
||||||
public override void OnInspectorGUI()
|
|
||||||
{
|
|
||||||
base.OnInspectorGUI();
|
|
||||||
|
|
||||||
if (!Application.isPlaying) return;
|
|
||||||
|
|
||||||
var dispacather = target as CommandDispatcher;
|
|
||||||
IReadOnlyList<CommandExecuter> normal; IReadOnlyList<CommandExecuter> solo;
|
|
||||||
dispacather.GetRegisters(out normal, out solo);
|
|
||||||
|
|
||||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
|
||||||
EditorGUILayout.LabelField("NORMAL");
|
|
||||||
foreach (var item in normal)
|
|
||||||
{
|
|
||||||
Draw(item);
|
|
||||||
}
|
|
||||||
EditorGUILayout.EndVertical();
|
|
||||||
|
|
||||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
|
||||||
EditorGUILayout.LabelField("SOLO");
|
|
||||||
foreach (var item in solo)
|
|
||||||
{
|
|
||||||
Draw(item);
|
|
||||||
}
|
|
||||||
EditorGUILayout.EndVertical();
|
|
||||||
|
|
||||||
EditorGUILayout.LabelField(dispacather.Current.Name);
|
|
||||||
|
|
||||||
Repaint();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Draw(CommandExecuter item)
|
|
||||||
{
|
|
||||||
EditorGUILayout.BeginHorizontal(EditorStyles.helpBox);
|
|
||||||
using (new EditorGUI.DisabledGroupScope(!item.Enable))
|
|
||||||
EditorGUILayout.ObjectField(item.gameObject, typeof(GameObject), false);
|
|
||||||
EditorGUILayout.EndHorizontal();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 57378be70cec95341aea522ad2d8e30d
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 69eb869b06dab98439f07da4549fb7cb
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 86a02c697fd26264cb5ee552b582449b
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "AxiReplay"
|
|
||||||
}
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0a45db2096af23647aaafe5b70ccb4d7
|
|
||||||
AssemblyDefinitionImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,11 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace AxiReplay
|
|
||||||
{
|
|
||||||
internal interface IReplayReader : IDisposable
|
|
||||||
{
|
|
||||||
bool NextFrame(out ReplayStep data);
|
|
||||||
bool TakeFrame(int addFrame, out ReplayStep data);
|
|
||||||
bool NextFramebyFrameIdx(int FrameID, out ReplayStep data);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 896ff07370157db46b612575616020ed
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,12 +0,0 @@
|
|||||||
using System;
|
|
||||||
|
|
||||||
namespace AxiReplay
|
|
||||||
{
|
|
||||||
internal interface IReplayWriter : IDisposable
|
|
||||||
{
|
|
||||||
void NextFrame(UInt64 frameInput);
|
|
||||||
void NextFramebyFrameIdx(int FrameID, UInt64 frameInput);
|
|
||||||
void TakeFrame(int addFrame, UInt64 frameInput);
|
|
||||||
void SaveData(string path, bool bNeedDump = false, string dumpFilePath = null);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 6a8fcda365e5a7f428f88bc130eb913b
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,147 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
|
|
||||||
namespace AxiReplay
|
|
||||||
{
|
|
||||||
public class NetReplay
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// 客户端当前帧
|
|
||||||
/// </summary>
|
|
||||||
public int mCurrClientFrameIdx = 0;
|
|
||||||
/// <summary>
|
|
||||||
/// 服务器远端当前帧
|
|
||||||
/// </summary>
|
|
||||||
public int mRemoteFrameIdx { get; private set; }
|
|
||||||
/// <summary>
|
|
||||||
/// 服务器远端当前提前量
|
|
||||||
/// </summary>
|
|
||||||
public int mRemoteForwardCount { get; private set; }
|
|
||||||
/// <summary>
|
|
||||||
/// Remote 2 Client Frame Gap
|
|
||||||
/// </summary>
|
|
||||||
public int mDiffFrameCount => mRemoteFrameIdx - mCurrClientFrameIdx;
|
|
||||||
/// <summary>
|
|
||||||
/// 网络数据队列
|
|
||||||
/// </summary>
|
|
||||||
Queue<ReplayStep> mNetReplayQueue = new Queue<ReplayStep>();
|
|
||||||
/// <summary>
|
|
||||||
/// 当前数据
|
|
||||||
/// </summary>
|
|
||||||
ReplayStep mCurrReplay;
|
|
||||||
/// <summary>
|
|
||||||
/// 下一个数据数据
|
|
||||||
/// </summary>
|
|
||||||
ReplayStep mNextReplay;
|
|
||||||
|
|
||||||
bool bNetInit = false;
|
|
||||||
public NetReplay()
|
|
||||||
{
|
|
||||||
ResetData();
|
|
||||||
}
|
|
||||||
public void ResetData()
|
|
||||||
{
|
|
||||||
mNetReplayQueue.Clear();
|
|
||||||
mCurrReplay = default(ReplayStep);
|
|
||||||
mCurrReplay.FrameStartID = int.MinValue;
|
|
||||||
bNetInit = false;
|
|
||||||
}
|
|
||||||
public void InData(ReplayStep inputData, int ServerFrameIdx)
|
|
||||||
{
|
|
||||||
mNetReplayQueue.Enqueue(inputData);
|
|
||||||
mRemoteFrameIdx = inputData.FrameStartID;
|
|
||||||
if (!bNetInit)
|
|
||||||
{
|
|
||||||
bNetInit = true;
|
|
||||||
mNextReplay = mNetReplayQueue.Dequeue();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public bool TryGetNextFrame(out ReplayStep data, out int frameDiff, out bool inputDiff)
|
|
||||||
{
|
|
||||||
if (!bNetInit)
|
|
||||||
{
|
|
||||||
data = default(ReplayStep);
|
|
||||||
frameDiff = default(int);
|
|
||||||
inputDiff = false;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
TakeFrame(1, out data, out frameDiff, out inputDiff);
|
|
||||||
return frameDiff > 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool TryGetNextFrame(int targetFrame, out ReplayStep data, out int frameDiff, out bool inputDiff)
|
|
||||||
{
|
|
||||||
if (!bNetInit)
|
|
||||||
{
|
|
||||||
data = default(ReplayStep);
|
|
||||||
frameDiff = default(int);
|
|
||||||
inputDiff = false;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return TakeFrameToTargetFrame(targetFrame, out data, out frameDiff, out inputDiff);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TakeFrame(int addFrame, out ReplayStep data, out int bFrameDiff, out bool inputDiff)
|
|
||||||
{
|
|
||||||
int targetFrame = mCurrClientFrameIdx + addFrame;
|
|
||||||
TakeFrameToTargetFrame(targetFrame, out data, out bFrameDiff, out inputDiff);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool TakeFrameToTargetFrame(int targetFrame, out ReplayStep data, out int bFrameDiff, out bool inputDiff)
|
|
||||||
{
|
|
||||||
bool result;
|
|
||||||
inputDiff = false;
|
|
||||||
if (targetFrame == mNextReplay.FrameStartID && targetFrame <= mRemoteFrameIdx && mNetReplayQueue.Count > 0)
|
|
||||||
{
|
|
||||||
//当前帧追加
|
|
||||||
mCurrClientFrameIdx = targetFrame;
|
|
||||||
ulong oldInput = mCurrReplay.InPut;
|
|
||||||
mCurrReplay = mNextReplay;
|
|
||||||
if (oldInput != mCurrReplay.InPut)
|
|
||||||
inputDiff = true;
|
|
||||||
mNextReplay = mNetReplayQueue.Dequeue();
|
|
||||||
result = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
result = false;
|
|
||||||
|
|
||||||
bFrameDiff = mRemoteFrameIdx - mCurrClientFrameIdx;
|
|
||||||
data = mCurrReplay;
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int GetSkipFrameCount()
|
|
||||||
{
|
|
||||||
if(!bNetInit)
|
|
||||||
return 0;
|
|
||||||
//本地队列差异高于服务器提前量的值
|
|
||||||
int moreNum = mDiffFrameCount - mRemoteForwardCount;
|
|
||||||
//if (mDiffFrameCount < 0 || mDiffFrameCount > 10000)
|
|
||||||
// return 0;
|
|
||||||
|
|
||||||
////游戏刚开始的一小段时间,直接追满
|
|
||||||
//if (mCurrClientFrameIdx < 60)
|
|
||||||
// return moreNum;
|
|
||||||
|
|
||||||
int skip = 0;
|
|
||||||
if (mDiffFrameCount > short.MaxValue) skip = 0;
|
|
||||||
else if (moreNum <= 1) skip = 0;
|
|
||||||
else if (moreNum <= 3) skip = 2;
|
|
||||||
else if (moreNum <= 6) skip = 2;
|
|
||||||
else if (moreNum <= 20) skip = moreNum / 2; //20帧以内,平滑跳帧数
|
|
||||||
else skip = moreNum;//完全追上
|
|
||||||
return skip;
|
|
||||||
|
|
||||||
//var frameGap = mDiffFrameCount;
|
|
||||||
//if (frameGap > 10000) return 0;
|
|
||||||
//if (frameGap <= 2) skip = 0;
|
|
||||||
//if (frameGap > 2 && frameGap < 6) skip = 1 + 1;
|
|
||||||
//else if (frameGap > 7 && frameGap < 12) skip = 2 + 1;
|
|
||||||
//else if (frameGap > 13 && frameGap < 20) skip = 3 + 1;
|
|
||||||
//else skip = frameGap - 2;
|
|
||||||
|
|
||||||
|
|
||||||
//return skip;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 452b58ff73a0853449845fd9e1134cc2
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,101 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Runtime.InteropServices;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace AxiReplay
|
|
||||||
{
|
|
||||||
[StructLayout(LayoutKind.Explicit, Size = 44)]
|
|
||||||
public struct ReplayHandler
|
|
||||||
{
|
|
||||||
[FieldOffset(0)]
|
|
||||||
public int Format;
|
|
||||||
[FieldOffset(sizeof(int) * 1)]
|
|
||||||
public int RomID;
|
|
||||||
[FieldOffset(sizeof(int) * 2)]
|
|
||||||
public int RomType;
|
|
||||||
[FieldOffset(sizeof(int) * 3)]
|
|
||||||
public int DataOffset;
|
|
||||||
[FieldOffset(sizeof(int) * 4)]
|
|
||||||
public int TitleOffset;
|
|
||||||
[FieldOffset(sizeof(int) * 5)]
|
|
||||||
public int NoteOffset;
|
|
||||||
[FieldOffset(sizeof(int) * 6)]
|
|
||||||
public int AllFrame;
|
|
||||||
[FieldOffset(sizeof(int) * 7)]
|
|
||||||
public int AllTime;
|
|
||||||
[FieldOffset(sizeof(int) * 8)]
|
|
||||||
public int SingleLenght;
|
|
||||||
[FieldOffset(sizeof(int) * 9)]
|
|
||||||
public long CreateTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Explicit)]
|
|
||||||
public struct ReplayStep
|
|
||||||
{
|
|
||||||
[FieldOffset(0)]
|
|
||||||
public UInt64 All64Data;
|
|
||||||
[FieldOffset(0)]
|
|
||||||
public Int32 FrameStartID;
|
|
||||||
[FieldOffset(4)]
|
|
||||||
public UInt64 InPut;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class ReplayData
|
|
||||||
{
|
|
||||||
public static int HandlerLenght = sizeof(int) * 9 + sizeof(long);
|
|
||||||
public enum ReplayFormat : byte
|
|
||||||
{
|
|
||||||
None = 0,
|
|
||||||
FM32IPBYTE,
|
|
||||||
FM32IP16,
|
|
||||||
FM32IP32,
|
|
||||||
FM32IP64,
|
|
||||||
}
|
|
||||||
public static void GetStringByteData(string str, out byte[] data, out int lenghtWithEnd, Encoding encoding)
|
|
||||||
{
|
|
||||||
data = encoding.GetBytes(str);
|
|
||||||
lenghtWithEnd = data.Length + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static byte[] GetHandlerData(ReplayHandler replayhandler)
|
|
||||||
{
|
|
||||||
int size = Marshal.SizeOf(typeof(ReplayHandler));
|
|
||||||
byte[] arr = new byte[size];
|
|
||||||
|
|
||||||
IntPtr ptr = Marshal.AllocHGlobal(size);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Marshal.StructureToPtr(replayhandler, ptr, false);
|
|
||||||
Marshal.Copy(ptr, arr, 0, size);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
Marshal.FreeHGlobal(ptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
return arr;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static ReplayHandler GetReplayHandlerFromData(byte[] data)
|
|
||||||
{
|
|
||||||
if (data == null || data.Length < ReplayData.HandlerLenght)
|
|
||||||
{
|
|
||||||
throw new ArgumentException("Invalid data length or null data.");
|
|
||||||
}
|
|
||||||
|
|
||||||
IntPtr ptr = Marshal.AllocHGlobal(ReplayData.HandlerLenght);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// 将byte数组的内容复制到非托管内存中
|
|
||||||
Marshal.Copy(data, 0, ptr, ReplayData.HandlerLenght);
|
|
||||||
// 从非托管内存将内容转换回ReplayHandler结构体
|
|
||||||
return (ReplayHandler)Marshal.PtrToStructure(ptr, typeof(ReplayHandler));
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
// 释放非托管内存
|
|
||||||
Marshal.FreeHGlobal(ptr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 42df5a138f4f4ae488815f35d8e748da
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,174 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text;
|
|
||||||
using static AxiReplay.ReplayData;
|
|
||||||
|
|
||||||
namespace AxiReplay
|
|
||||||
{
|
|
||||||
public class ReplayReader : IReplayReader
|
|
||||||
{
|
|
||||||
public ReplayData.ReplayFormat mFormat { get; private set; }
|
|
||||||
public Encoding TexEncoding { get; private set; }
|
|
||||||
ReplayHandler handler;
|
|
||||||
string mTitle;
|
|
||||||
string mNote;
|
|
||||||
int mAllFrame;
|
|
||||||
int mAllTime;
|
|
||||||
long mData;
|
|
||||||
int mSingleInputLenght;
|
|
||||||
int mSingleDataLenght;
|
|
||||||
FileStream mStream;
|
|
||||||
BinaryReader mBinaryReader;
|
|
||||||
|
|
||||||
int mCurrFrame = -1;
|
|
||||||
byte[] mNextOutbytes;
|
|
||||||
public ReplayStep currStep;
|
|
||||||
public ReplayStep nextStep;
|
|
||||||
bool bEnd;
|
|
||||||
|
|
||||||
List<string> dbgList = new List<string>();
|
|
||||||
bool bdbg = false;
|
|
||||||
string dumpPath;
|
|
||||||
|
|
||||||
public ReplayReader(string path, bool bWithDump = false, string dumppath = null)
|
|
||||||
{
|
|
||||||
dbgList.Clear();
|
|
||||||
bdbg = bWithDump;
|
|
||||||
dumpPath = dumppath;
|
|
||||||
mStream = new FileStream(path, FileMode.Open, FileAccess.Read);
|
|
||||||
mBinaryReader = new BinaryReader(mStream);
|
|
||||||
byte[] Outbytes;
|
|
||||||
Outbytes = mBinaryReader.ReadBytes(ReplayData.HandlerLenght);
|
|
||||||
handler = ReplayData.GetReplayHandlerFromData(Outbytes);
|
|
||||||
mFormat = (ReplayFormat)handler.Format;
|
|
||||||
switch (mFormat)
|
|
||||||
{
|
|
||||||
case ReplayData.ReplayFormat.FM32IP64: mSingleInputLenght = sizeof(UInt64); break;
|
|
||||||
case ReplayData.ReplayFormat.FM32IP32: mSingleInputLenght = sizeof(UInt32); break;
|
|
||||||
case ReplayData.ReplayFormat.FM32IP16: mSingleInputLenght = sizeof(UInt16); break;
|
|
||||||
case ReplayData.ReplayFormat.FM32IPBYTE: mSingleInputLenght = sizeof(byte); break;
|
|
||||||
}
|
|
||||||
//Frame+Lenght
|
|
||||||
mSingleDataLenght = (sizeof(UInt32)) + mSingleInputLenght;
|
|
||||||
nextStep = new ReplayStep();
|
|
||||||
nextStep.FrameStartID = -1;
|
|
||||||
bEnd = false;
|
|
||||||
|
|
||||||
dbgList.Add($"Format => {handler.Format}");
|
|
||||||
dbgList.Add($"DataOffset => {handler.DataOffset}");
|
|
||||||
dbgList.Add($"CreateTime => {handler.CreateTime}");
|
|
||||||
dbgList.Add($"AllFrame => {handler.AllFrame}");
|
|
||||||
dbgList.Add($"SingleLenght => {handler.SingleLenght}");
|
|
||||||
|
|
||||||
|
|
||||||
mNextOutbytes = new byte[mSingleDataLenght];
|
|
||||||
|
|
||||||
if (bWithDump)
|
|
||||||
{
|
|
||||||
int TestFrameIdx = -1;
|
|
||||||
while (!bEnd)
|
|
||||||
{
|
|
||||||
UpdateNextFrame(TestFrameIdx++);
|
|
||||||
}
|
|
||||||
File.WriteAllLines(dumppath, dbgList);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UpdateNextFrame(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void UpdateNextFrame(int targetFrame)
|
|
||||||
{
|
|
||||||
//如果已经超过
|
|
||||||
while (targetFrame >= nextStep.FrameStartID)
|
|
||||||
{
|
|
||||||
if (nextStep.FrameStartID >= handler.AllFrame)
|
|
||||||
{
|
|
||||||
bEnd = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
mBinaryReader.Read(mNextOutbytes, 0, mSingleDataLenght);
|
|
||||||
switch (mFormat)
|
|
||||||
{
|
|
||||||
case ReplayFormat.FM32IP64:
|
|
||||||
{
|
|
||||||
nextStep.FrameStartID = BitConverter.ToInt32(mNextOutbytes, 0);
|
|
||||||
nextStep.InPut = BitConverter.ToUInt64(mNextOutbytes, sizeof(UInt32));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ReplayFormat.FM32IP32:
|
|
||||||
{
|
|
||||||
nextStep.All64Data = BitConverter.ToUInt64(mNextOutbytes, 0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ReplayFormat.FM32IP16:
|
|
||||||
{
|
|
||||||
nextStep.All64Data = BitConverter.ToUInt64(mNextOutbytes, 0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case ReplayFormat.FM32IPBYTE:
|
|
||||||
{
|
|
||||||
nextStep.All64Data = BitConverter.ToUInt64(mNextOutbytes, 0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
dbgList.Add($"{nextStep.FrameStartID} | {nextStep.InPut}");
|
|
||||||
|
|
||||||
targetFrame++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int byFrameIdx = 0;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 往前推进1帧的Input(返回是否变化)
|
|
||||||
/// </summary>
|
|
||||||
public bool NextFrame(out ReplayStep data)
|
|
||||||
{
|
|
||||||
return TakeFrame(1, out data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 往前推进指定帧数量的Input (返回是否变化)
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="addFrame"></param>
|
|
||||||
public bool TakeFrame(int addFrame, out ReplayStep data)
|
|
||||||
{
|
|
||||||
bool Changed = false;
|
|
||||||
mCurrFrame += addFrame;
|
|
||||||
if (mCurrFrame >= nextStep.FrameStartID)
|
|
||||||
{
|
|
||||||
Changed = currStep.InPut != nextStep.InPut;
|
|
||||||
currStep = nextStep;
|
|
||||||
data = currStep;
|
|
||||||
UpdateNextFrame(mCurrFrame);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
data = currStep;
|
|
||||||
}
|
|
||||||
return Changed;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 往前推进帧的,指定帧下标
|
|
||||||
/// </summary>
|
|
||||||
public bool NextFramebyFrameIdx(int FrameID, out ReplayStep data)
|
|
||||||
{
|
|
||||||
bool res = TakeFrame(FrameID - byFrameIdx, out data);
|
|
||||||
byFrameIdx = FrameID;
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
mStream.Dispose();
|
|
||||||
mBinaryReader.Dispose();
|
|
||||||
//TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 66e0e18d1f5981745a3078e8460cb0e6
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,158 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Text;
|
|
||||||
|
|
||||||
namespace AxiReplay
|
|
||||||
{
|
|
||||||
public class ReplayWriter : IReplayWriter
|
|
||||||
{
|
|
||||||
public ReplayData.ReplayFormat mFormat { get; private set; }
|
|
||||||
public Encoding TexEncoding { get; private set; }
|
|
||||||
ReplayHandler handler;
|
|
||||||
string mTitle;
|
|
||||||
string mNote;
|
|
||||||
int mAllFrame;
|
|
||||||
int mAllTime;
|
|
||||||
long mData;
|
|
||||||
int mSingleInputLenght;
|
|
||||||
int mSingleDataLenght;
|
|
||||||
MemoryStream mStream;
|
|
||||||
BinaryWriter mBinaryWriter;
|
|
||||||
|
|
||||||
int mCurrFrame;
|
|
||||||
UInt64 mCurrInput;
|
|
||||||
ReplayStep wirteStep;
|
|
||||||
|
|
||||||
List<string> dbgList = new List<string>();
|
|
||||||
|
|
||||||
public ReplayWriter(string Title, string Note, ReplayData.ReplayFormat format, Encoding encoding)
|
|
||||||
{
|
|
||||||
mTitle = Title;
|
|
||||||
mNote = Note;
|
|
||||||
TexEncoding = encoding;
|
|
||||||
mFormat = format;
|
|
||||||
switch (mFormat)
|
|
||||||
{
|
|
||||||
case ReplayData.ReplayFormat.FM32IP64: mSingleInputLenght = sizeof(UInt64); break;
|
|
||||||
case ReplayData.ReplayFormat.FM32IP32: mSingleInputLenght = sizeof(UInt32); break;
|
|
||||||
case ReplayData.ReplayFormat.FM32IP16: mSingleInputLenght = sizeof(UInt16); break;
|
|
||||||
case ReplayData.ReplayFormat.FM32IPBYTE: mSingleInputLenght = sizeof(byte); break;
|
|
||||||
}
|
|
||||||
mSingleDataLenght = (sizeof(UInt32)) + mSingleInputLenght;
|
|
||||||
|
|
||||||
mStream = new MemoryStream();
|
|
||||||
mBinaryWriter = new BinaryWriter(mStream);
|
|
||||||
|
|
||||||
mCurrFrame = -1;
|
|
||||||
mCurrInput = int.MaxValue;
|
|
||||||
wirteStep = new ReplayStep();
|
|
||||||
|
|
||||||
dbgList.Clear();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int byFrameIdx = 0;
|
|
||||||
/// <summary>
|
|
||||||
/// 往前推进帧的,指定帧下标
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="frameInput"></param>
|
|
||||||
public void NextFramebyFrameIdx(int FrameID, UInt64 frameInput)
|
|
||||||
{
|
|
||||||
TakeFrame(FrameID - byFrameIdx, frameInput);
|
|
||||||
byFrameIdx = FrameID;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 往前推进1帧的Input
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="frameInput"></param>
|
|
||||||
public void NextFrame(UInt64 frameInput)
|
|
||||||
{
|
|
||||||
TakeFrame(1, frameInput);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// 往前推进指定帧数量的Input
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="frameInput"></param>
|
|
||||||
public void TakeFrame(int addFrame, UInt64 frameInput)
|
|
||||||
{
|
|
||||||
if (addFrame < 0)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
mCurrFrame += addFrame;
|
|
||||||
if (mCurrInput == frameInput)
|
|
||||||
return;
|
|
||||||
mCurrInput = frameInput;
|
|
||||||
|
|
||||||
wirteStep.FrameStartID = mCurrFrame;
|
|
||||||
wirteStep.InPut = mCurrInput;
|
|
||||||
dbgList.Add($"{mCurrFrame} | {mCurrInput}");
|
|
||||||
|
|
||||||
switch (mFormat)
|
|
||||||
{
|
|
||||||
case ReplayData.ReplayFormat.FM32IP64:
|
|
||||||
mBinaryWriter.Write(wirteStep.FrameStartID);
|
|
||||||
mBinaryWriter.Write(wirteStep.InPut);
|
|
||||||
break;
|
|
||||||
case ReplayData.ReplayFormat.FM32IP32:
|
|
||||||
mBinaryWriter.Write(BitConverter.GetBytes(wirteStep.All64Data), 0, 4 + 4);
|
|
||||||
break;
|
|
||||||
case ReplayData.ReplayFormat.FM32IP16:
|
|
||||||
mBinaryWriter.Write(BitConverter.GetBytes(wirteStep.All64Data), 0, 4 + 2);
|
|
||||||
break;
|
|
||||||
case ReplayData.ReplayFormat.FM32IPBYTE:
|
|
||||||
mBinaryWriter.Write(BitConverter.GetBytes(wirteStep.All64Data), 0, 4 + 1);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void SaveData(string path, bool bWithDump = false, string dumppath = null)
|
|
||||||
{
|
|
||||||
byte[] titleData; int titleLenghtWithEnd;
|
|
||||||
ReplayData.GetStringByteData(mTitle, out titleData, out titleLenghtWithEnd, TexEncoding);
|
|
||||||
byte[] noteData; int noteLenghtWithEnd;
|
|
||||||
ReplayData.GetStringByteData(mNote, out noteData, out noteLenghtWithEnd, TexEncoding);
|
|
||||||
|
|
||||||
ReplayHandler handler = new ReplayHandler();
|
|
||||||
handler.Format = (int)this.mFormat;
|
|
||||||
handler.DataOffset = ReplayData.HandlerLenght;
|
|
||||||
handler.CreateTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
|
|
||||||
handler.AllFrame = wirteStep.FrameStartID;
|
|
||||||
handler.SingleLenght = mSingleDataLenght;
|
|
||||||
|
|
||||||
using (FileStream fs = new FileStream(path, FileMode.Create))
|
|
||||||
{
|
|
||||||
using (BinaryWriter bw = new BinaryWriter(fs))
|
|
||||||
{
|
|
||||||
//写入Handler
|
|
||||||
bw.Write(ReplayData.GetHandlerData(handler));
|
|
||||||
//写入Data
|
|
||||||
bw.Write(mStream.ToArray());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bWithDump)
|
|
||||||
{
|
|
||||||
List<string> temp = new List<string>();
|
|
||||||
temp.Add($"Format => {handler.Format}");
|
|
||||||
temp.Add($"DataOffset => {handler.DataOffset}");
|
|
||||||
temp.Add($"CreateTime => {handler.CreateTime}");
|
|
||||||
temp.Add($"AllFrame => {handler.AllFrame}");
|
|
||||||
temp.Add($"SingleLenght => {handler.SingleLenght}");
|
|
||||||
dbgList.InsertRange(0, temp);
|
|
||||||
File.WriteAllLines(dumppath, dbgList);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
mStream.Dispose();
|
|
||||||
mBinaryWriter.Dispose();
|
|
||||||
//TODO
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: dc53a3d9a3e1749438b6ad1cef7b39bc
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 1a06e18767c1031478a76b8f96e60fe6
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 464892be6eabb2d43a4f71878bcfea72
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,9 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 96837540e9d9b4d199c332f11ef9047a
|
|
||||||
folderAsset: yes
|
|
||||||
timeCreated: 1487124681
|
|
||||||
licenseType: Pro
|
|
||||||
DefaultImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,498 +0,0 @@
|
|||||||
# Changelog
|
|
||||||
|
|
||||||
## [v3.2.0](https://github.com/mob-sakai/UIEffect/tree/v3.2.0) (2019-07-17)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v3.1.0...v3.2.0)
|
|
||||||
|
|
||||||
**Breaking changes:**
|
|
||||||
|
|
||||||
- UICapturedImage: Immediate capturing option is removed as it does not work on many platforms [\#161](https://github.com/mob-sakai/UIEffect/issues/161)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Add demo for Unity 2018+ and TMPro 1.2+ [\#166](https://github.com/mob-sakai/UIEffect/issues/166)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- UIDissolve's "Reverse Play" option works only in OnEnable [\#183](https://github.com/mob-sakai/UIEffect/issues/183)
|
|
||||||
- CanvasGroup.alpha does not affect [\#180](https://github.com/mob-sakai/UIEffect/issues/180)
|
|
||||||
- UIShiny effect remain on screen after calling Stop\(\) [\#165](https://github.com/mob-sakai/UIEffect/issues/165)
|
|
||||||
- Material caching is not working properly [\#163](https://github.com/mob-sakai/UIEffect/issues/163)
|
|
||||||
- Add a null check to TMPro sprite asset material checking [\#176](https://github.com/mob-sakai/UIEffect/pull/176) ([Oskiii](https://github.com/Oskiii))
|
|
||||||
|
|
||||||
## [v3.1.0](https://github.com/mob-sakai/UIEffect/tree/v3.1.0) (2019-03-10)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v3.0.4...v3.1.0)
|
|
||||||
|
|
||||||
## Support TextMeshPro!
|
|
||||||
|
|
||||||
* All components are supported
|
|
||||||
* Advanced blur is supported for Unity 2017.1+
|
|
||||||
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/53533025-8495d800-3b3c-11e9-9e94-320f3ec7ad74.png)
|
|
||||||
|
|
||||||
For details to use, see [Usage with TextMeshPro](https://github.com/mob-sakai/UIEffect#usage-with-textmeshpro)
|
|
||||||
|
|
||||||
**NOTE: Unity 5.x will not be supported in the near future**
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Support TextMeshPro [\#137](https://github.com/mob-sakai/UIEffect/issues/137)
|
|
||||||
- add reverse animation option to UIDissolve [\#153](https://github.com/mob-sakai/UIEffect/pull/153) ([antpaw](https://github.com/antpaw))
|
|
||||||
|
|
||||||
## [v3.0.4](https://github.com/mob-sakai/UIEffect/tree/v3.0.4) (2019-02-15)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v3.0.3...v3.0.4)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- add initial play animation delay option to UIShiny [\#147](https://github.com/mob-sakai/UIEffect/pull/147) ([antpaw](https://github.com/antpaw))
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- UIEffectCapturedImage.effectColor does not work as expected [\#148](https://github.com/mob-sakai/UIEffect/issues/148)
|
|
||||||
- fix warnings [\#146](https://github.com/mob-sakai/UIEffect/pull/146) ([antpaw](https://github.com/antpaw))
|
|
||||||
|
|
||||||
## [v3.0.3](https://github.com/mob-sakai/UIEffect/tree/v3.0.3) (2019-01-21)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v3.0.2...v3.0.3)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- UIHsvModifier works only on gamma-space [\#145](https://github.com/mob-sakai/UIEffect/issues/145)
|
|
||||||
|
|
||||||
## [v3.0.2](https://github.com/mob-sakai/UIEffect/tree/v3.0.2) (2019-01-15)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v3.0.1...v3.0.2)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- UIEffect & UIHsvModifier & UITransitionEffect Strange action [\#144](https://github.com/mob-sakai/UIEffect/issues/144)
|
|
||||||
|
|
||||||
## [v3.0.1](https://github.com/mob-sakai/UIEffect/tree/v3.0.1) (2018-11-07)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v3.0.0...v3.0.1)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Compile error in 2018.3 [\#139](https://github.com/mob-sakai/UIEffect/issues/139)
|
|
||||||
|
|
||||||
## [v3.0.0](https://github.com/mob-sakai/UIEffect/tree/v3.0.0) (2018-10-09)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.8.3...v3.0.0)
|
|
||||||
|
|
||||||
### New architecture: easier, faster and more beautiful.
|
|
||||||
* Simple & easy-to-use
|
|
||||||
* 20% faster
|
|
||||||
* High precision parameter
|
|
||||||
|
|
||||||
### Immediate capturing (UIEffectCapturedImage option)
|
|
||||||
* Capture the previous frame immediately without any camera.
|
|
||||||
* You no longer have to wait one frame to capture!
|
|
||||||
* *NOTE: LWRP, WebGL and Unity 5.x for iOS/Mac are not supported.*
|
|
||||||
|
|
||||||
### Advanced blur (UIEffect option)
|
|
||||||
* Remove common artifacts in the blur effect for uGUI.
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/42547121-80134788-84fb-11e8-97a0-048bba9634ea.png)
|
|
||||||
* It is effective for small padding size atlases, including dynamic fonts!
|
|
||||||
|
|
||||||
**Breaking changes:**
|
|
||||||
|
|
||||||
- UIEffectCapturedImage: Remove 'TargetTexture' feature [\#136](https://github.com/mob-sakai/UIEffect/issues/136)
|
|
||||||
- Remove 'additional shadow' in UIShadow component [\#110](https://github.com/mob-sakai/UIEffect/issues/110)
|
|
||||||
- Remove 'custom effect' feature in UIEffect component [\#98](https://github.com/mob-sakai/UIEffect/issues/98)
|
|
||||||
- Remove 'shadow effect' feature in UIEffect component [\#97](https://github.com/mob-sakai/UIEffect/issues/97)
|
|
||||||
- Remove 'hue effect' in UIEffect component [\#91](https://github.com/mob-sakai/UIEffect/issues/91)
|
|
||||||
- Remove 'cutoff' and 'mono' effect in UIEffect component [\#78](https://github.com/mob-sakai/UIEffect/issues/78)
|
|
||||||
- New architecture: Shared texture for effect parameter [\#63](https://github.com/mob-sakai/UIEffect/issues/63)
|
|
||||||
- Change: Change `ToneMode` to `EffectMode` [\#61](https://github.com/mob-sakai/UIEffect/issues/61)
|
|
||||||
- Separate shadow effect to other component [\#52](https://github.com/mob-sakai/UIEffect/issues/52)
|
|
||||||
- Use the graphic color as effect color, to reduce parameters [\#50](https://github.com/mob-sakai/UIEffect/issues/50)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- UITransitionEffect: "Pass ray on hidden" option [\#135](https://github.com/mob-sakai/UIEffect/issues/135)
|
|
||||||
- Add component menu in editor [\#133](https://github.com/mob-sakai/UIEffect/issues/133)
|
|
||||||
- UITransitionEffect: Add Show/Hide method [\#132](https://github.com/mob-sakai/UIEffect/issues/132)
|
|
||||||
- UIEffectCapturedImage: Immediate capturing [\#130](https://github.com/mob-sakai/UIEffect/issues/130)
|
|
||||||
- Improve blurring for atlas [\#95](https://github.com/mob-sakai/UIEffect/issues/95)
|
|
||||||
- Use Canvas.willRenderCanvases event instead of Update method [\#87](https://github.com/mob-sakai/UIEffect/issues/87)
|
|
||||||
|
|
||||||
**Closed issues:**
|
|
||||||
|
|
||||||
- Add tooltip [\#92](https://github.com/mob-sakai/UIEffect/issues/92)
|
|
||||||
- UIShiny: change parameter name `highlight` to `gloss` [\#93](https://github.com/mob-sakai/UIEffect/issues/93)
|
|
||||||
|
|
||||||
## [v2.8.3](https://github.com/mob-sakai/UIEffect/tree/v2.8.3) (2018-09-29)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.8.2...v2.8.3)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- UIEffectCapturedImage: Black screen with Unity 2018.1+ editor on Windows [\#131](https://github.com/mob-sakai/UIEffect/issues/131)
|
|
||||||
|
|
||||||
## [v2.8.2](https://github.com/mob-sakai/UIEffect/tree/v2.8.2) (2018-09-26)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.8.1...v2.8.2)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- UICapturedEffectImage does not work with 'ScreenSpace - Overlay' in edit mode [\#128](https://github.com/mob-sakai/UIEffect/issues/128)
|
|
||||||
- The UIEffectCapturedImage is upside down with 'ScreenSpace - Overlay' mode [\#127](https://github.com/mob-sakai/UIEffect/issues/127)
|
|
||||||
- When "UI-Effect.mat" is created automatically, Unity hangs up. [\#126](https://github.com/mob-sakai/UIEffect/issues/126)
|
|
||||||
- UICapturedEffectImage does not work with Lightweight Render Pipeline LWRP [\#125](https://github.com/mob-sakai/UIEffect/issues/125)
|
|
||||||
|
|
||||||
## [v2.8.1](https://github.com/mob-sakai/UIEffect/tree/v2.8.1) (2018-08-17)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.8.0...v2.8.1)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- \(Demo\) "Transition capture & dissolve" is incorrect [\#119](https://github.com/mob-sakai/UIEffect/issues/119)
|
|
||||||
|
|
||||||
## [v2.8.0](https://github.com/mob-sakai/UIEffect/tree/v2.8.0) (2018-08-14)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.7.1...v2.8.0)
|
|
||||||
|
|
||||||
* Create a screen transition!
|
|
||||||
![8 -08-2018 19-29-38](https://user-images.githubusercontent.com/12690315/43832265-dbdecc98-9b41-11e8-8ab5-9f49420a6a16.gif)
|
|
||||||
|
|
||||||
* Some updates make UIEffectCapturedImage easier to use!
|
|
||||||
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- UIEffectCapturedImage: Supports 'ScreenSpace - Overlay' [\#115](https://github.com/mob-sakai/UIEffect/issues/115)
|
|
||||||
- UIEffectCapturedImage: Keep aspect ratio [\#114](https://github.com/mob-sakai/UIEffect/issues/114)
|
|
||||||
- UIEffectCapturedImage: 'Capture on enable' option [\#113](https://github.com/mob-sakai/UIEffect/issues/113)
|
|
||||||
- UITransitionEffect: Change transition texture [\#111](https://github.com/mob-sakai/UIEffect/issues/111)
|
|
||||||
|
|
||||||
**Closed issues:**
|
|
||||||
|
|
||||||
- UIEffectCapturedImage: change parameter name `keepCanvasSize` to `fitToScreen` [\#116](https://github.com/mob-sakai/UIEffect/issues/116)
|
|
||||||
|
|
||||||
## [v2.7.1](https://github.com/mob-sakai/UIEffect/tree/v2.7.1) (2018-08-06)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.7.0...v2.7.1)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- In v2.7.0, UIEffectCapturedImage is flipped vertically on Windows [\#112](https://github.com/mob-sakai/UIEffect/issues/112)
|
|
||||||
|
|
||||||
## [v2.7.0](https://github.com/mob-sakai/UIEffect/tree/v2.7.0) (2018-07-26)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.6.2...v2.7.0)
|
|
||||||
|
|
||||||
UIHsvModifier: Modify hue, saturation, and value as you like!
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/43200006-d6e2bf54-904e-11e8-9f22-0c0f9ce5912f.gif)
|
|
||||||
|
|
||||||
* Note: `Hue` mode in UIEffect component will be obsolete in the near future. Please use UIHsvModifier component instead.
|
|
||||||
* Note: `Cutoff` and `Mono` mode in UIEffect component will be obsolete in the near future. Please use UITransitionEffect component instead.
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- UIEffectCapturedImage: Support target RenderTexture to use external component [\#108](https://github.com/mob-sakai/UIEffect/issues/108)
|
|
||||||
- Transition effect as other component [\#105](https://github.com/mob-sakai/UIEffect/issues/105)
|
|
||||||
- Use multi-pass blurring to capture screenshot [\#96](https://github.com/mob-sakai/UIEffect/issues/96)
|
|
||||||
- Feature: HSV modifier [\#44](https://github.com/mob-sakai/UIEffect/issues/44)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- UIEffectCapturedImage: ColorMode is not working [\#109](https://github.com/mob-sakai/UIEffect/issues/109)
|
|
||||||
- UIDissolve is not maskable [\#101](https://github.com/mob-sakai/UIEffect/issues/101)
|
|
||||||
|
|
||||||
## [v2.6.2](https://github.com/mob-sakai/UIEffect/tree/v2.6.2) (2018-07-18)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.6.1...v2.6.2)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Shader has compile errors in D3D9 or D3D11\_9X\(WSA\) [\#99](https://github.com/mob-sakai/UIEffect/issues/99)
|
|
||||||
|
|
||||||
## [v2.6.1](https://github.com/mob-sakai/UIEffect/tree/v2.6.1) (2018-06-14)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.6.0...v2.6.1)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Errors occurred on build \(v2.6.0\) [\#90](https://github.com/mob-sakai/UIEffect/issues/90)
|
|
||||||
|
|
||||||
## [v2.6.0](https://github.com/mob-sakai/UIEffect/tree/v2.6.0) (2018-06-14)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.5.2...v2.6.0)
|
|
||||||
|
|
||||||
Blurring effect has been improved about 6 times faster!
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/41393724-08420b1e-6fe2-11e8-8741-721789c2d029.png)
|
|
||||||
|
|
||||||
You can change noise texture for dissolve effect from inspector or script!
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/41397570-99bda636-6fef-11e8-827b-932d7a8e74c1.gif)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Improve blurring performance [\#88](https://github.com/mob-sakai/UIEffect/issues/88)
|
|
||||||
- Separate the effect with a character [\#86](https://github.com/mob-sakai/UIEffect/issues/86)
|
|
||||||
- Change dissolve texture [\#75](https://github.com/mob-sakai/UIEffect/issues/75)
|
|
||||||
|
|
||||||
**Closed issues:**
|
|
||||||
|
|
||||||
- Change BlurMode correctly [\#84](https://github.com/mob-sakai/UIEffect/issues/84)
|
|
||||||
- Refactoring to prepare v3.0.0 [\#83](https://github.com/mob-sakai/UIEffect/issues/83)
|
|
||||||
- Change ColorMode correctly [\#51](https://github.com/mob-sakai/UIEffect/issues/51)
|
|
||||||
|
|
||||||
## [v2.5.2](https://github.com/mob-sakai/UIEffect/tree/v2.5.2) (2018-06-07)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.5.1...v2.5.2)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- When `UIEFFECT\_SEPARATE` symbol is defined, UIDissolve does not work well [\#85](https://github.com/mob-sakai/UIEffect/issues/85)
|
|
||||||
|
|
||||||
## [v2.5.1](https://github.com/mob-sakai/UIEffect/tree/v2.5.1) (2018-05-31)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.5.0...v2.5.1)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Fix demo [\#82](https://github.com/mob-sakai/UIEffect/issues/82)
|
|
||||||
|
|
||||||
## [v2.5.0](https://github.com/mob-sakai/UIEffect/tree/v2.5.0) (2018-05-31)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.4.1...v2.5.0)
|
|
||||||
|
|
||||||
Shiny effect has been update!
|
|
||||||
|
|
||||||
![v2.5.0](https://user-images.githubusercontent.com/12690315/40654533-8877c99c-6379-11e8-8ae7-b91995fc230b.gif)
|
|
||||||
|
|
||||||
* NOTE: `UIEffect.shadow***` will be obsolete in the near future. Please use `UIShadow` component instead.
|
|
||||||
* NOTE: `UIEffect.custom***` will be obsolete in the near future. Please use `UICustomEffect` component (experimental) instead.
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- UIDissolve: Play effect from script/inspector [\#81](https://github.com/mob-sakai/UIEffect/issues/81)
|
|
||||||
- UIShiny: Play effect from script/inspector [\#80](https://github.com/mob-sakai/UIEffect/issues/80)
|
|
||||||
- During play mode, you can change the effect type, color type, and blur type \(in Editor\) [\#73](https://github.com/mob-sakai/UIEffect/issues/73)
|
|
||||||
- Add shadow effect as other component [\#72](https://github.com/mob-sakai/UIEffect/issues/72)
|
|
||||||
- UIShiny : Visual update [\#68](https://github.com/mob-sakai/UIEffect/issues/68)
|
|
||||||
- Add Custom effect as other component [\#60](https://github.com/mob-sakai/UIEffect/issues/60)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- UIDissolve: When width=1 and location=0, image is lacked [\#79](https://github.com/mob-sakai/UIEffect/issues/79)
|
|
||||||
|
|
||||||
**Closed issues:**
|
|
||||||
|
|
||||||
- UIEffect inherit UIEffectBase [\#74](https://github.com/mob-sakai/UIEffect/issues/74)
|
|
||||||
- Change directory structure [\#56](https://github.com/mob-sakai/UIEffect/issues/56)
|
|
||||||
|
|
||||||
## [v2.4.1](https://github.com/mob-sakai/UIEffect/tree/v2.4.1) (2018-05-29)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.4.0...v2.4.1)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- UIEffectCapturedImage: The result image is flipped vertically [\#69](https://github.com/mob-sakai/UIEffect/issues/69)
|
|
||||||
|
|
||||||
## [v2.4.0](https://github.com/mob-sakai/UIEffect/tree/v2.4.0) (2018-05-21)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.3.2...v2.4.0)
|
|
||||||
|
|
||||||
UIDissolve has been updated!
|
|
||||||
|
|
||||||
![v2.4.0](https://user-images.githubusercontent.com/12690315/40294019-a0bfb8aa-5d0e-11e8-8451-873502db6a99.gif)
|
|
||||||
![editor](https://user-images.githubusercontent.com/12690315/40294212-9e1b1ce2-5d0f-11e8-88ce-78a8c0523dc2.png)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- UIDissolve: Add color mode option. [\#64](https://github.com/mob-sakai/UIEffect/issues/64)
|
|
||||||
|
|
||||||
## [v2.3.2](https://github.com/mob-sakai/UIEffect/tree/v2.3.2) (2018-05-21)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.3.1...v2.3.2)
|
|
||||||
|
|
||||||
**Closed issues:**
|
|
||||||
|
|
||||||
- Fixed: UIEffectCapturedImage: When iteration count is even. the result image is flipped vertically \(other method\) [\#65](https://github.com/mob-sakai/UIEffect/issues/65)
|
|
||||||
|
|
||||||
## [v2.3.1](https://github.com/mob-sakai/UIEffect/tree/v2.3.1) (2018-05-10)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.3.0...v2.3.1)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- UIEffectCapturedImage: When iteration count is even. the result image is flipped vertically \(on Windows\) [\#62](https://github.com/mob-sakai/UIEffect/issues/62)
|
|
||||||
|
|
||||||
## [v2.3.0](https://github.com/mob-sakai/UIEffect/tree/v2.3.0) (2018-05-08)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.2.0...v2.3.0)
|
|
||||||
|
|
||||||
New components has been available!
|
|
||||||
|
|
||||||
* **UIShiny** : Shiny effect WITHOUT Mask component. This will suppress extra draw calls and improve performance.
|
|
||||||
* **UIDissolve** : Dissolve effect WITHOUT material instancing. This will suppress extra draw calls and improve performance.
|
|
||||||
* **UIFlip** : Flip graphic horizontal/vertical.
|
|
||||||
|
|
||||||
![v2.3.0](https://user-images.githubusercontent.com/12690315/40706142-cb98d2d0-6427-11e8-96fc-5cc5fd9c553a.gif)
|
|
||||||
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Feature: Flip horizontal/vertical [\#47](https://github.com/mob-sakai/UIEffect/issues/47)
|
|
||||||
- Feature: Dissolve [\#45](https://github.com/mob-sakai/UIEffect/issues/45)
|
|
||||||
- Feature: Shining effect [\#9](https://github.com/mob-sakai/UIEffect/issues/9)
|
|
||||||
|
|
||||||
## [v2.2.0](https://github.com/mob-sakai/UIEffect/tree/v2.2.0) (2018-04-12)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.1.0...v2.2.0)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Feature: Customize shader/material. You can create a custom ui shader and control it with UIEffct. [\#46](https://github.com/mob-sakai/UIEffect/issues/46)
|
|
||||||
- Feature: UIEffectCapturedImage supports keep canvas size. [\#54](https://github.com/mob-sakai/UIEffect/issues/54)
|
|
||||||
- Feature: UIEffectCapturedImage supports `Quality Type` to easy setup. [\#53](https://github.com/mob-sakai/UIEffect/issues/53)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Bug: Color effect on shadow is incorrect. [\#55](https://github.com/mob-sakai/UIEffect/issues/55)
|
|
||||||
|
|
||||||
**Closed issues:**
|
|
||||||
|
|
||||||
- Change: Reduce the pixelation effect when tone level = 1. [\#57](https://github.com/mob-sakai/UIEffect/issues/57)
|
|
||||||
|
|
||||||
## [v2.1.0](https://github.com/mob-sakai/UIEffect/tree/v2.1.0) (2018-04-04)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v2.0.0...v2.1.0)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Feature: UIEffectCapturedImage support iterative operation [\#48](https://github.com/mob-sakai/UIEffect/issues/48)
|
|
||||||
|
|
||||||
## [v2.0.0](https://github.com/mob-sakai/UIEffect/tree/v2.0.0) (2018-01-25)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.6.1...v2.0.0)
|
|
||||||
|
|
||||||
**Breaking changes:**
|
|
||||||
|
|
||||||
- Important: Unity 5.3.x & 5.4.x are no longer supported. [\#40](https://github.com/mob-sakai/UIEffect/issues/40)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Improve: Reduce the materials. Too many effect materials are exist. [\#15](https://github.com/mob-sakai/UIEffect/issues/15)
|
|
||||||
|
|
||||||
**Closed issues:**
|
|
||||||
|
|
||||||
- Change: Change namespace to Coffee.UIExtensions [\#6](https://github.com/mob-sakai/UIEffect/issues/6)
|
|
||||||
|
|
||||||
## [v1.6.1](https://github.com/mob-sakai/UIEffect/tree/v1.6.1) (2018-01-25)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.6.0...v1.6.1)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Bug: Cannot access protected member `UnityEngine.UI.BaseMeshEffect.graphic` [\#41](https://github.com/mob-sakai/UIEffect/issues/41)
|
|
||||||
|
|
||||||
## [v1.6.0](https://github.com/mob-sakai/UIEffect/tree/v1.6.0) (2018-01-18)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.5.1...v1.6.0)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Bug: Pixelization is incorrect. [\#34](https://github.com/mob-sakai/UIEffect/issues/34)
|
|
||||||
|
|
||||||
**Closed issues:**
|
|
||||||
|
|
||||||
- Change: UIEffect inherit BaseMeshEffect. [\#35](https://github.com/mob-sakai/UIEffect/issues/35)
|
|
||||||
- Change: Blur level range to \[0-1\] [\#32](https://github.com/mob-sakai/UIEffect/issues/32)
|
|
||||||
- Change: ShadowMode -\> ShadowStyle [\#18](https://github.com/mob-sakai/UIEffect/issues/18)
|
|
||||||
|
|
||||||
## [v1.5.1](https://github.com/mob-sakai/UIEffect/tree/v1.5.1) (2018-01-18)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.5.0...v1.5.1)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Bug: An error occurs when no effect is specified for UICapturedImage. [\#36](https://github.com/mob-sakai/UIEffect/issues/36)
|
|
||||||
|
|
||||||
## [v1.5.0](https://github.com/mob-sakai/UIEffect/tree/v1.5.0) (2018-01-16)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.4.4...v1.5.0)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Feature: ShadowMode 'Shadow 3' [\#11](https://github.com/mob-sakai/UIEffect/issues/11)
|
|
||||||
- Feature: Hue [\#8](https://github.com/mob-sakai/UIEffect/issues/8)
|
|
||||||
- Feature: Gradient [\#7](https://github.com/mob-sakai/UIEffect/issues/7)
|
|
||||||
|
|
||||||
## [v1.4.4](https://github.com/mob-sakai/UIEffect/tree/v1.4.4) (2018-01-16)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.4.3...v1.4.4)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Bug: Error has occur on edit prefab. [\#27](https://github.com/mob-sakai/UIEffect/issues/27)
|
|
||||||
|
|
||||||
## [v1.4.3](https://github.com/mob-sakai/UIEffect/tree/v1.4.3) (2018-01-15)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.4.2...v1.4.3)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Bug: Color effect is incorrect. [\#19](https://github.com/mob-sakai/UIEffect/issues/19)
|
|
||||||
|
|
||||||
## [v1.4.2](https://github.com/mob-sakai/UIEffect/tree/v1.4.2) (2018-01-14)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.4.1...v1.4.2)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Feature: ColorMode `Override` [\#12](https://github.com/mob-sakai/UIEffect/issues/12)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Bug: Error has occur OnAfterDeserialize in editor. [\#16](https://github.com/mob-sakai/UIEffect/issues/16)
|
|
||||||
|
|
||||||
## [v1.4.1](https://github.com/mob-sakai/UIEffect/tree/v1.4.1) (2018-01-10)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.4.0...v1.4.1)
|
|
||||||
|
|
||||||
## [v1.4.0](https://github.com/mob-sakai/UIEffect/tree/v1.4.0) (2018-01-07)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.3.0...v1.4.0)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Feature: Exclude unused shader variants from build. [\#5](https://github.com/mob-sakai/UIEffect/issues/5)
|
|
||||||
|
|
||||||
## [v1.3.0](https://github.com/mob-sakai/UIEffect/tree/v1.3.0) (2018-01-06)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.2.0...v1.3.0)
|
|
||||||
|
|
||||||
## [v1.2.0](https://github.com/mob-sakai/UIEffect/tree/v1.2.0) (2018-01-05)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.1.0...v1.2.0)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Feature: Fast multiple shadow effect. [\#2](https://github.com/mob-sakai/UIEffect/issues/2)
|
|
||||||
|
|
||||||
**Fixed bugs:**
|
|
||||||
|
|
||||||
- Pixelaration shifts to the lower right. [\#4](https://github.com/mob-sakai/UIEffect/issues/4)
|
|
||||||
|
|
||||||
## [v1.1.0](https://github.com/mob-sakai/UIEffect/tree/v1.1.0) (2017-08-17)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/v1.0.0...v1.1.0)
|
|
||||||
|
|
||||||
**Implemented enhancements:**
|
|
||||||
|
|
||||||
- Feature: Pixelization effect [\#1](https://github.com/mob-sakai/UIEffect/issues/1)
|
|
||||||
|
|
||||||
## [v1.0.0](https://github.com/mob-sakai/UIEffect/tree/v1.0.0) (2017-03-01)
|
|
||||||
|
|
||||||
[Full Changelog](https://github.com/mob-sakai/UIEffect/compare/a9c4ec4e72a055ca5e5c24f6a75c6720f0f6fd7f...v1.0.0)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 1fe75f65a37454bf5aa2dab183b4305a
|
|
||||||
timeCreated: 1522651812
|
|
||||||
licenseType: Pro
|
|
||||||
DefaultImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 37c4bd2925c96431b827a2031f76add8
|
|
||||||
folderAsset: yes
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,9 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: b00cb7cc19de648f38332743361bdacb
|
|
||||||
folderAsset: yes
|
|
||||||
timeCreated: 1547811341
|
|
||||||
licenseType: Pro
|
|
||||||
DefaultImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,169 +0,0 @@
|
|||||||
#if TMP_PRESENT
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using UnityEngine;
|
|
||||||
using TMPro.EditorUtilities;
|
|
||||||
using UnityEditor;
|
|
||||||
using Coffee.UIExtensions;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace Coffee.UIEffect.Editors
|
|
||||||
{
|
|
||||||
public class TMP_SDFShaderGUI : TMPro.EditorUtilities.TMP_SDFShaderGUI
|
|
||||||
{
|
|
||||||
static GUIStyle s_PanelTitle;
|
|
||||||
Material currentMaterial;
|
|
||||||
|
|
||||||
public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] properties)
|
|
||||||
{
|
|
||||||
currentMaterial = materialEditor.target as Material;
|
|
||||||
base.OnGUI(materialEditor, properties);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override void DoGUI()
|
|
||||||
{
|
|
||||||
if (currentMaterial.HasProperty("_FaceColor"))
|
|
||||||
{
|
|
||||||
base.DoGUI();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
DrawSpritePanel();
|
|
||||||
}
|
|
||||||
|
|
||||||
var name = currentMaterial.shader.name;
|
|
||||||
if (name.EndsWith("(UIEffect)"))
|
|
||||||
{
|
|
||||||
DrawEffectPanel();
|
|
||||||
}
|
|
||||||
else if (name.EndsWith("(UIDissolve)"))
|
|
||||||
{
|
|
||||||
DrawDissolvePanel();
|
|
||||||
}
|
|
||||||
else if (name.EndsWith("(UIShiny)"))
|
|
||||||
{
|
|
||||||
DrawShinyPanel();
|
|
||||||
}
|
|
||||||
else if (name.EndsWith("(UITransition)"))
|
|
||||||
{
|
|
||||||
DrawTransitionPanel();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void DrawSpritePanel()
|
|
||||||
{
|
|
||||||
if (BeginTmpPanel("Sprite", true))
|
|
||||||
{
|
|
||||||
EditorGUI.indentLevel += 1;
|
|
||||||
DoTexture2D("_MainTex", "Texture");
|
|
||||||
DoColor("_Color", "Color");
|
|
||||||
EditorGUI.indentLevel -= 1;
|
|
||||||
}
|
|
||||||
EndTmpPanel();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DrawDissolvePanel()
|
|
||||||
{
|
|
||||||
if (BeginTmpPanel("Dissolve", true))
|
|
||||||
{
|
|
||||||
EditorGUI.indentLevel += 1;
|
|
||||||
DoTexture2D("_NoiseTex", "Texture");
|
|
||||||
DrawEnum<ColorMode>(currentMaterial);
|
|
||||||
EditorGUI.indentLevel -= 1;
|
|
||||||
}
|
|
||||||
EndTmpPanel();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DrawShinyPanel()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void DrawTransitionPanel()
|
|
||||||
{
|
|
||||||
if (BeginTmpPanel("Transition", true))
|
|
||||||
{
|
|
||||||
EditorGUI.indentLevel += 1;
|
|
||||||
DoTexture2D("_NoiseTex", "Texture");
|
|
||||||
DrawEnum<UITransitionEffect.EffectMode>(currentMaterial);
|
|
||||||
EditorGUI.indentLevel -= 1;
|
|
||||||
}
|
|
||||||
EndTmpPanel();
|
|
||||||
}
|
|
||||||
|
|
||||||
void DrawEffectPanel()
|
|
||||||
{
|
|
||||||
if (BeginTmpPanel("Effect", true))
|
|
||||||
{
|
|
||||||
EditorGUI.indentLevel += 1;
|
|
||||||
DrawEnum<EffectMode>(currentMaterial);
|
|
||||||
DrawEnum<ColorMode>(currentMaterial);
|
|
||||||
DrawEnum<BlurMode>(currentMaterial);
|
|
||||||
DrawToggleKeyword(currentMaterial, "Advanced Blur", "EX");
|
|
||||||
EditorGUI.indentLevel -= 1;
|
|
||||||
}
|
|
||||||
EndTmpPanel();
|
|
||||||
}
|
|
||||||
|
|
||||||
static void DrawEnum<T>(Material mat)
|
|
||||||
{
|
|
||||||
Type type = typeof(T);
|
|
||||||
string[] names = System.Enum.GetNames(type);
|
|
||||||
int[] values = System.Enum.GetValues(type) as int[];
|
|
||||||
|
|
||||||
int mode = 0;
|
|
||||||
for (int i = 0; i < names.Length; i++)
|
|
||||||
{
|
|
||||||
if (mat.IsKeywordEnabled(names[i].ToUpper()))
|
|
||||||
mode = values[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
var newMode = EditorGUILayout.IntPopup(ObjectNames.NicifyVariableName(type.Name), mode, names, values);
|
|
||||||
if (mode != newMode)
|
|
||||||
{
|
|
||||||
Array.IndexOf<int>(values, mode);
|
|
||||||
mat.DisableKeyword(names[Array.IndexOf<int>(values, mode)].ToUpper());
|
|
||||||
if (newMode != 0)
|
|
||||||
mat.EnableKeyword(names[Array.IndexOf<int>(values, newMode)].ToUpper());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void DrawToggleKeyword(Material mat, string label, string keyword)
|
|
||||||
{
|
|
||||||
bool value = mat.IsKeywordEnabled(keyword);
|
|
||||||
if (EditorGUILayout.Toggle(label, value) != value)
|
|
||||||
{
|
|
||||||
if (value)
|
|
||||||
mat.DisableKeyword(keyword);
|
|
||||||
else
|
|
||||||
mat.EnableKeyword(keyword);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool BeginTmpPanel(string panel, bool expanded)
|
|
||||||
{
|
|
||||||
if (s_PanelTitle == null)
|
|
||||||
{
|
|
||||||
s_PanelTitle = new GUIStyle(EditorStyles.label) { fontStyle = FontStyle.Bold };
|
|
||||||
}
|
|
||||||
|
|
||||||
EditorGUILayout.BeginVertical(EditorStyles.helpBox);
|
|
||||||
Rect position = EditorGUI.IndentedRect(GUILayoutUtility.GetRect(20f, 18f));
|
|
||||||
position.x += 20;
|
|
||||||
position.width += 6f;
|
|
||||||
expanded = GUI.Toggle(position, expanded, panel, s_PanelTitle);
|
|
||||||
EditorGUI.indentLevel++;
|
|
||||||
EditorGUI.BeginDisabledGroup(false);
|
|
||||||
return expanded;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void EndTmpPanel()
|
|
||||||
{
|
|
||||||
EditorGUI.EndDisabledGroup();
|
|
||||||
EditorGUI.indentLevel--;
|
|
||||||
EditorGUILayout.EndVertical();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 0163d601911a448eea37923cb9fd6760
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
Copyright 2017 mob-sakai
|
|
||||||
|
|
||||||
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.
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 5c8ea34522dd786479be28b1347542b7
|
|
||||||
timeCreated: 1515125149
|
|
||||||
licenseType: Free
|
|
||||||
TextScriptImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,9 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 39ac2ac7853a94fbc9d9e3d1151b9dfe
|
|
||||||
folderAsset: yes
|
|
||||||
timeCreated: 1515203270
|
|
||||||
licenseType: Pro
|
|
||||||
DefaultImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,170 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!21 &2100000
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 8
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Dissolve
|
|
||||||
m_Shader: {fileID: 4800000, guid: e1b48dc831eb147e9886c049033213bf, type: 3}
|
|
||||||
m_ShaderKeywords:
|
|
||||||
m_LightmapFlags: 1
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _NoiseTex:
|
|
||||||
m_Texture: {fileID: 2800000, guid: 3e04c247fb2604af186173fce0bc62de, type: 3}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParamTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21162286589123374
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Dissolve-Fill
|
|
||||||
m_Shader: {fileID: 4800000, guid: e1b48dc831eb147e9886c049033213bf, type: 3}
|
|
||||||
m_ShaderKeywords: FILL
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _NoiseTex:
|
|
||||||
m_Texture: {fileID: 2800000, guid: 3e04c247fb2604af186173fce0bc62de, type: 3}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParamTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21841578701121694
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Dissolve-Subtract
|
|
||||||
m_Shader: {fileID: 4800000, guid: e1b48dc831eb147e9886c049033213bf, type: 3}
|
|
||||||
m_ShaderKeywords: SUBTRACT
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _NoiseTex:
|
|
||||||
m_Texture: {fileID: 2800000, guid: 3e04c247fb2604af186173fce0bc62de, type: 3}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParamTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21939717441729078
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Dissolve-Add
|
|
||||||
m_Shader: {fileID: 4800000, guid: e1b48dc831eb147e9886c049033213bf, type: 3}
|
|
||||||
m_ShaderKeywords: ADD
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _NoiseTex:
|
|
||||||
m_Texture: {fileID: 2800000, guid: 3e04c247fb2604af186173fce0bc62de, type: 3}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParamTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 17b17d6effbe14075a3bbdf1fda1f6e1
|
|
||||||
timeCreated: 1526828325
|
|
||||||
licenseType: Free
|
|
||||||
NativeFormatImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,89 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!21 &2100000
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-HSV
|
|
||||||
m_Shader: {fileID: 4800000, guid: 7fc74090480c84f8b977cfcd55cdfe82, type: 3}
|
|
||||||
m_ShaderKeywords:
|
|
||||||
m_LightmapFlags: 1
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _BumpMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailAlbedoMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailMask:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _DetailNormalMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _EmissionMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _MetallicGlossMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _OcclusionMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParallaxMap:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParamTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _BumpScale: 1
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Cutoff: 0.5
|
|
||||||
- _DetailNormalMapScale: 1
|
|
||||||
- _DstBlend: 0
|
|
||||||
- _GlossMapScale: 1
|
|
||||||
- _Glossiness: 0.5
|
|
||||||
- _GlossyReflections: 1
|
|
||||||
- _Metallic: 0
|
|
||||||
- _Mode: 0
|
|
||||||
- _OcclusionStrength: 1
|
|
||||||
- _Parallax: 0.02
|
|
||||||
- _SmoothnessTextureChannel: 0
|
|
||||||
- _SpecularHighlights: 1
|
|
||||||
- _SrcBlend: 1
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UVSec: 0
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
- _ZWrite: 1
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c8243c28075b3431084ded42f46ad567
|
|
||||||
timeCreated: 1531885800
|
|
||||||
licenseType: Pro
|
|
||||||
NativeFormatImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,40 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!21 &2100000
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Shiny
|
|
||||||
m_Shader: {fileID: 4800000, guid: 20ffe76c2439c403aabdd25bd94bf011, type: 3}
|
|
||||||
m_ShaderKeywords:
|
|
||||||
m_LightmapFlags: 1
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParamTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 9dc7e810a87b444ab96919f3215c2fe5
|
|
||||||
timeCreated: 1523859834
|
|
||||||
licenseType: Pro
|
|
||||||
NativeFormatImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,786 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!21 &2100000
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 8
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords:
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21030718755001428
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Nega
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: NEGA
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21035471806006108
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Cutoff
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: CUTOFF
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _NoiseTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParamTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _TransitionTexture:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21048363040754768
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-DetailBlur
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: DETAILBLUR
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21103468552951452
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-FastBlur
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: FASTBLUR
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21131850011850196
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Dissolve
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: DISSOLVE
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _NoiseTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParamTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _TransitionTexture:
|
|
||||||
m_Texture: {fileID: 2800000, guid: a74d3d4a498866d44b094d3d3717604d, type: 3}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21165426070421698
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Sepia
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: SEPIA
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21217090983920726
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Add
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: ADD
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21383746192470066
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Fade
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: FADE
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _NoiseTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _ParamTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
- _TransitionTexture:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21397352971802982
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-DetailBlur
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: DETAILBLUR
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21433706607038904
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Hue
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: HUE
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21436055995319614
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Grayscale
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: GRAYSCALE
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21553036001917316
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-MediumBlur
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: MEDIUMBLUR
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21582814526197946
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Grayscale-Fill-MediumBlur
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: FILL GRAYSCALE MEDIUMBLUR
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21593680702607820
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Cutoff-Fill
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: CUTOFF FILL
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21613091319250600
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Fill
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: FILL
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21640785413581468
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Fill-DetailBlur
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: DETAILBLUR FILL
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21660598935221184
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Fill-MediumBlur
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: FILL MEDIUMBLUR
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21730298716655380
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Subtract
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: SUBTRACT
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21748420970599250
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Fade
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: FADE
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21811646848630374
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Pixel
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: PIXEL
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
||||||
--- !u!21 &21972152714168334
|
|
||||||
Material:
|
|
||||||
serializedVersion: 6
|
|
||||||
m_ObjectHideFlags: 9
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_Name: UI-Effect-Transition-Grayscale-Fill
|
|
||||||
m_Shader: {fileID: 4800000, guid: 85ad24dd0759947ddb117625e108d49c, type: 3}
|
|
||||||
m_ShaderKeywords: FILL GRAYSCALE
|
|
||||||
m_LightmapFlags: 5
|
|
||||||
m_EnableInstancingVariants: 0
|
|
||||||
m_DoubleSidedGI: 0
|
|
||||||
m_CustomRenderQueue: -1
|
|
||||||
stringTagMap: {}
|
|
||||||
disabledShaderPasses: []
|
|
||||||
m_SavedProperties:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TexEnvs:
|
|
||||||
- _MainTex:
|
|
||||||
m_Texture: {fileID: 0}
|
|
||||||
m_Scale: {x: 1, y: 1}
|
|
||||||
m_Offset: {x: 0, y: 0}
|
|
||||||
m_Floats:
|
|
||||||
- _ColorMask: 15
|
|
||||||
- _Stencil: 0
|
|
||||||
- _StencilComp: 8
|
|
||||||
- _StencilOp: 0
|
|
||||||
- _StencilReadMask: 255
|
|
||||||
- _StencilWriteMask: 255
|
|
||||||
- _UseUIAlphaClip: 0
|
|
||||||
m_Colors:
|
|
||||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_BuildTextureStacks: []
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 77a4cc77ec7394415a18f9e5a4b8083e
|
|
||||||
timeCreated: 1532512709
|
|
||||||
licenseType: Pro
|
|
||||||
NativeFormatImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
File diff suppressed because it is too large
Load Diff
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: aee96bc531e6eba468ec405e536f515f
|
|
||||||
timeCreated: 1516545204
|
|
||||||
licenseType: Free
|
|
||||||
NativeFormatImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
File diff suppressed because it is too large
Load Diff
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 1a1a8e44196ca754a9a7b9cb80e17573
|
|
||||||
timeCreated: 1516545204
|
|
||||||
licenseType: Free
|
|
||||||
NativeFormatImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
Binary file not shown.
Before Width: | Height: | Size: 20 KiB |
@ -1,100 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 3e04c247fb2604af186173fce0bc62de
|
|
||||||
timeCreated: 1524468976
|
|
||||||
licenseType: Pro
|
|
||||||
TextureImporter:
|
|
||||||
fileIDToRecycleName: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 0
|
|
||||||
sRGBTexture: 0
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
isReadable: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
filterMode: 1
|
|
||||||
aniso: -1
|
|
||||||
mipBias: -1
|
|
||||||
wrapMode: 1
|
|
||||||
nPOTScale: 1
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 0
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
alphaUsage: 2
|
|
||||||
alphaIsTransparency: 0
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 10
|
|
||||||
textureShape: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
platformSettings:
|
|
||||||
- buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 256
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
- buildTarget: Standalone
|
|
||||||
maxTextureSize: 256
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
- buildTarget: iPhone
|
|
||||||
maxTextureSize: 256
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
- buildTarget: Android
|
|
||||||
maxTextureSize: 256
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
- buildTarget: WebGL
|
|
||||||
maxTextureSize: 256
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
spritePackingTag:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
Binary file not shown.
Before Width: | Height: | Size: 59 KiB |
@ -1,100 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a74d3d4a498866d44b094d3d3717604d
|
|
||||||
timeCreated: 1533229728
|
|
||||||
licenseType: Free
|
|
||||||
TextureImporter:
|
|
||||||
fileIDToRecycleName: {}
|
|
||||||
serializedVersion: 4
|
|
||||||
mipmaps:
|
|
||||||
mipMapMode: 0
|
|
||||||
enableMipMap: 1
|
|
||||||
sRGBTexture: 0
|
|
||||||
linearTexture: 0
|
|
||||||
fadeOut: 0
|
|
||||||
borderMipMap: 0
|
|
||||||
mipMapFadeDistanceStart: 1
|
|
||||||
mipMapFadeDistanceEnd: 3
|
|
||||||
bumpmap:
|
|
||||||
convertToNormalMap: 0
|
|
||||||
externalNormalMap: 0
|
|
||||||
heightScale: 0.25
|
|
||||||
normalMapFilter: 0
|
|
||||||
isReadable: 0
|
|
||||||
grayScaleToAlpha: 0
|
|
||||||
generateCubemap: 6
|
|
||||||
cubemapConvolution: 0
|
|
||||||
seamlessCubemap: 0
|
|
||||||
textureFormat: 1
|
|
||||||
maxTextureSize: 2048
|
|
||||||
textureSettings:
|
|
||||||
filterMode: -1
|
|
||||||
aniso: -1
|
|
||||||
mipBias: -1
|
|
||||||
wrapMode: 1
|
|
||||||
nPOTScale: 1
|
|
||||||
lightmap: 0
|
|
||||||
compressionQuality: 50
|
|
||||||
spriteMode: 0
|
|
||||||
spriteExtrude: 1
|
|
||||||
spriteMeshType: 1
|
|
||||||
alignment: 0
|
|
||||||
spritePivot: {x: 0.5, y: 0.5}
|
|
||||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
|
||||||
spritePixelsToUnits: 100
|
|
||||||
alphaUsage: 2
|
|
||||||
alphaIsTransparency: 0
|
|
||||||
spriteTessellationDetail: -1
|
|
||||||
textureType: 10
|
|
||||||
textureShape: 1
|
|
||||||
maxTextureSizeSet: 0
|
|
||||||
compressionQualitySet: 0
|
|
||||||
textureFormatSet: 0
|
|
||||||
platformSettings:
|
|
||||||
- buildTarget: DefaultTexturePlatform
|
|
||||||
maxTextureSize: 512
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
- buildTarget: Standalone
|
|
||||||
maxTextureSize: 512
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
- buildTarget: Android
|
|
||||||
maxTextureSize: 512
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
- buildTarget: WebGL
|
|
||||||
maxTextureSize: 512
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
- buildTarget: iPhone
|
|
||||||
maxTextureSize: 512
|
|
||||||
textureFormat: -1
|
|
||||||
textureCompression: 1
|
|
||||||
compressionQuality: 50
|
|
||||||
crunchedCompression: 0
|
|
||||||
allowsAlphaSplitting: 0
|
|
||||||
overridden: 0
|
|
||||||
spriteSheet:
|
|
||||||
serializedVersion: 2
|
|
||||||
sprites: []
|
|
||||||
outline: []
|
|
||||||
spritePackingTag:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,244 +0,0 @@
|
|||||||
UIEffect
|
|
||||||
===
|
|
||||||
|
|
||||||
UIEffect provide visual effect components for uGUI element in Unity.
|
|
||||||
|
|
||||||
[![](https://img.shields.io/github/release/mob-sakai/UIEffect.svg?label=latest%20version)](https://github.com/mob-sakai/UIEffect/releases)
|
|
||||||
[![](https://img.shields.io/github/release-date/mob-sakai/UIEffect.svg)](https://github.com/mob-sakai/UIEffect/releases)
|
|
||||||
![](https://img.shields.io/badge/unity-5.5%2B-green.svg)
|
|
||||||
[![](https://img.shields.io/github/license/mob-sakai/UIEffect.svg)](https://github.com/mob-sakai/UIEffect/blob/master/LICENSE.txt)
|
|
||||||
[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-orange.svg)](http://makeapullrequest.com)
|
|
||||||
[![](https://img.shields.io/twitter/follow/mob_sakai.svg?label=Follow&style=social)](https://twitter.com/intent/follow?screen_name=mob_sakai)
|
|
||||||
|
|
||||||
<< [Description](#Description) | [WebGL Demo](#demo) | [Download](https://github.com/mob-sakai/UIEffect/releases) | [Usage](#usage) | [Example of using](#example-of-using) | [Development Note](#development-note) >>
|
|
||||||
|
|
||||||
### What's new? [See changelog ![](https://img.shields.io/github/release-date/mob-sakai/UIEffect.svg?label=last%20updated)](https://github.com/mob-sakai/UIEffect/blob/develop/CHANGELOG.md)
|
|
||||||
### Do you want to receive notifications for new releases? [Watch this repo ![](https://img.shields.io/github/watchers/mob-sakai/UIEffect.svg?style=social&label=Watch)](https://github.com/mob-sakai/UIEffect/subscription)
|
|
||||||
### Support me on Patreon! [![become_a_patron](https://user-images.githubusercontent.com/12690315/50731629-3b18b480-11ad-11e9-8fad-4b13f27969c1.png)](https://www.patreon.com/join/2343451?)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br><br><br><br>
|
|
||||||
## Description
|
|
||||||
|
|
||||||
Let's decorate your UI with effects!
|
|
||||||
You can control parameters as you like from the script as well as inspector.
|
|
||||||
AnimationClip is supported as a matter of course!
|
|
||||||
|
|
||||||
![thumbnail](https://user-images.githubusercontent.com/12690315/41398364-155cf5a6-6ff2-11e8-8124-9d16ef6ca267.gif)
|
|
||||||
![image](https://user-images.githubusercontent.com/12690315/38594668-636dd3ac-3d82-11e8-9951-820964a6a95f.gif)
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
#### Available effects
|
|
||||||
|
|
||||||
| Component | Features | Screenshot |
|
|
||||||
|-|-|-|
|
|
||||||
|**UIEffect**|Combine some visual effects.<br><br>**Effect Mode:** Grayscale, Sepia, Nega, Pixelation<br>**Color Mode:** Multiply, Fill, Additive, Subtract<br>**Blur Mode:** Fast, Medium, Detail<br>**Advanced Blur:** Enable more beautiful blurring.|<img src="https://user-images.githubusercontent.com/12690315/46639603-258df180-cba2-11e8-8f50-9e93bdc4c96e.png" width="600px">|
|
|
||||||
|**UICaptured EffectImage**|Capture a screenshot of a specific frame with effect, and display it.<br>This effect is non-realtime, light-weight, less-camera, but be effective enough.<br><br>**Effect Mode:** Grayscale, Sepia, Nega, Pixelation<br>**Color Mode:** Multiply, Fill, Additive, Subtract<br>**Blur Mode:** Fast, Medium, Detail<br>**Quality Mode:** Fast, Medium, Detail, Custom<br>**Capture On Enable:** When the component is enable, capture screen automatically.<br>**Blur iterations:** Number of blur iterations.<br>**Reduction/Downsampling Rate:** None, x1, x2, x4, x8<br>**Fit size to screen:** Fit RectTransform to the screen on captured.<br>**Immediate Capturing:**<br><br>*NOTE: This component can be used with UIEffect, UITransition etc.*<br>*NOTE: Immediate capturing does not support LWRP, WebGL and Unity 5.x for iOS/Mac.*|<img src="https://user-images.githubusercontent.com/12690315/44078752-4c2e4114-9fe2-11e8-97f0-54d3a36a562e.gif" width="600px">|
|
|
||||||
|**UIShiny**|Apply shining effect to a graphic.<br>The effect does not require Mask component or normal map.<br><br>**Parameters:** Effect factor, Width, Rotation, Softness, Brightness, Gloss<br>**Effect Player:** To play shining, enable `Play` in inspector or call `Play()` from script.|<img src="https://user-images.githubusercontent.com/12690315/46639689-b1078280-cba2-11e8-8716-cbc634af7293.gif" width="600px">|
|
|
||||||
|**UIDissolve**|Apply dissolve effect to a graphic.<br><br>**Color Mode for edge:** Multiply, Fill, Additive, Subtract<br>**Parameters:** Effect factor, Width, Rotation, Softness, Edge color<br>**Options:** Effect area, Keep effect aspect ratio<br>**Effect Player:** To play dissolving, call `Play()` from script.|<img src="https://user-images.githubusercontent.com/12690315/46639690-b1078280-cba2-11e8-8aa9-1d2650fe9a62.gif" width="600px">|
|
|
||||||
|**UIHsvModifier**|Modify HSV for graphic.<br><br>**Target:** Color, Range<br>**Adjustment:** Hue, Saturation, Value|<img src="https://user-images.githubusercontent.com/12690315/43200006-d6e2bf54-904e-11e8-9f22-0c0f9ce5912f.gif" width="600px">|
|
|
||||||
|**UITransition Effect**|Apply transition effect with a single channel texture.<br><br>**Effect Mode:** Cutoff, Fade, Dissolve<br>**Options:** Effect area, Keep effect aspect ratio, transition texture<br>**Pass Ray On Hidden:** Disable the graphic's raycastTarget on hidden.<br>**Effect Player:** To show/hide transition, call `Show()/Hide()` from script.|<img src="https://user-images.githubusercontent.com/12690315/46639688-b1078280-cba2-11e8-8bbb-16b8498bca5f.gif" width="600px">|
|
|
||||||
|
|
||||||
<br><br>
|
|
||||||
##### The following effects can be used with the above components.
|
|
||||||
|
|
||||||
| Component | Features | Screenshot |
|
|
||||||
|-|-|-|
|
|
||||||
|**UIShadow**|Add shadow/outline to a graphic.<br>The performance is better than the default Shadow/Outline component.<br><br>**ShadowStyle:** Shadow, Shadow3, Outline, Outline8|<img src="https://user-images.githubusercontent.com/12690315/46639604-258df180-cba2-11e8-98a9-aa31f04c695d.png" width="600px">|
|
|
||||||
|**UIGradient**|Change vertex color as gradient with angle and offset.<br><br>**Direction:** Horizontal, Vertical, Angle, Diagonal<br>**Options:** Offset, Color space|<img src="https://user-images.githubusercontent.com/12690315/40716995-ca87665e-6445-11e8-8233-ec2e21fefd6b.png" width="600px">|
|
|
||||||
|**UIFlip**|Flip a graphic.<br><br>**Direction:** Horizontal, Vertical, Both|<img src="https://user-images.githubusercontent.com/12690315/40716996-cab1fd7e-6445-11e8-9753-962d23991d86.png" width="600px">|
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br><br><br><br>
|
|
||||||
## Demo
|
|
||||||
|
|
||||||
[WebGL Demo](http://mob-sakai.github.io/UIEffect)
|
|
||||||
|
|
||||||
* Effect sample
|
|
||||||
* Transition
|
|
||||||
* Dialog window with blured background
|
|
||||||
* Included in unitypackage
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br><br><br><br>
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
1. Download UIEffect.unitypackage from [Releases](https://github.com/mob-sakai/UIEffect/releases).
|
|
||||||
2. Import the package into your Unity project. Select `Import Package > Custom Package` from the `Assets` menu.
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/46570979-edbb5a00-c9a7-11e8-845d-c5ee279effec.png)
|
|
||||||
3. In Unity5.6+, enable `TexCoord1` channel of canvas. See also [Development Note](##note-unity-56).
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/46567584-3525f400-c970-11e8-9839-5c9e810b0b80.png)
|
|
||||||
4. Add any effect component to UI element (Image, RawImage, Text, etc...) from `Add Component` in inspector or `Component > UI > UIEffect > ...` menu.
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/46570977-ebf19680-c9a7-11e8-9ffb-174f56107070.png)
|
|
||||||
6. Adjust the parameters of the effect as you like, in inspector.
|
|
||||||
![image](https://user-images.githubusercontent.com/12690315/38594668-636dd3ac-3d82-11e8-9951-820964a6a95f.gif)
|
|
||||||
7. Enjoy!
|
|
||||||
|
|
||||||
|
|
||||||
#### Usage with TextMeshPro
|
|
||||||
|
|
||||||
1. Add a symbol `TMP_PRESENT` to scripting define symbols.
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/54080742-14583500-433a-11e9-815b-8ed600697569.png)
|
|
||||||
2. If the material does not support the effect component, the following warning will be displayed.
|
|
||||||
When you press the Fix button, new material is automatically generated and set.
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/49728471-377d3500-fcb6-11e8-849b-d664aeb9da75.png)
|
|
||||||
3. If you want to use material variants, select `Create Material Preset` from the context menu to duplicate the material.
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/53881014-dfa45f00-4055-11e9-833f-7409adebc542.png)
|
|
||||||
4. Effect mode, color mode, blur mode and etc. can not be changed from the component editor.
|
|
||||||
Change them from the material editor.
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/53782892-bea71580-3f52-11e9-9d43-e7cb6761f52c.png)
|
|
||||||
5. If you want to enable "Advanced Blur", enable `TexCoord2` channel of canvas.
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/46567584-3525f400-c970-11e8-9839-5c9e810b0b80.png)
|
|
||||||
|
|
||||||
|
|
||||||
#### Usage without TextMeshPro
|
|
||||||
|
|
||||||
1. When you uninstalled TextMeshPro from the project, remove a symbol `TMP_PRESENT` to scripting define symbols.
|
|
||||||
![](https://user-images.githubusercontent.com/12690315/54080761-cabc1a00-433a-11e9-97ab-431cf1cfe602.png)
|
|
||||||
|
|
||||||
|
|
||||||
##### Requirement
|
|
||||||
|
|
||||||
* Unity 5.5+ *(included Unity 2018.x)*
|
|
||||||
* No other SDK are required
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br><br><br><br>
|
|
||||||
## Example of using
|
|
||||||
|
|
||||||
| Case | Description | Screenshot |
|
|
||||||
|-|-|-|
|
|
||||||
|Lock/unlock contents|Use UIEffect to apply grayscale.<br>Indicate to user that the content is unavailable.|![](https://user-images.githubusercontent.com/12690315/46563469-aba8fe80-c93c-11e8-850f-949f6f8da742.png)|
|
|
||||||
|Silhouette|Use UIEffect for filling color.|![](https://user-images.githubusercontent.com/12690315/46563576-3db10700-c93d-11e8-960e-4336ff3ce481.png)|
|
|
||||||
|Soft shadow/<br>Outer glow|Use UIEffect and UIShadow to blur the shadow.<br>To blur only shadow, set `Blur Factor` in UIEffect to 0.|![](https://user-images.githubusercontent.com/12690315/46566001-452edb00-c952-11e8-9cc4-6098a9eb67f3.png)|
|
|
||||||
|Colored shadow|Use UIEffect and UIShadow to fill shadow with color.<br>To fill only shadow, set `Color Factor` in UIEffect to 0.|![](https://user-images.githubusercontent.com/12690315/46566000-452edb00-c952-11e8-8d20-6ccc3fa92ae4.png)|
|
|
||||||
|Blurred dynamic font|Use UIEffect to blur text.<br>To blur dynamic font cleanly, enable `Advanced Blur` option.|![](https://user-images.githubusercontent.com/12690315/46566002-45c77180-c952-11e8-87cb-4d915e0614be.png)|
|
|
||||||
|Text with outline & shadow|Use two UIShadows to add outline and shadow.<br>There is less overdraw than default Outline/Shadow `(Default: 1 x 5 x 2 = 10 overdraws, UIShadow: 1 + 4 + 1 = 6 overdraws)`.|![](https://user-images.githubusercontent.com/12690315/46566003-45c77180-c952-11e8-9b47-7bf563ffbaa7.png)|
|
|
||||||
|Shining button|Use UIShiny for shining button.<br>Shine the button and indicate to user that you can press the button.<br>Enable `Play` and `Loop` option to shine it without any AnimationClip.|![](https://user-images.githubusercontent.com/12690315/46563539-fb87c580-c93c-11e8-8c08-0f21872c47d4.gif)|
|
|
||||||
|Blurring the background of a menu|Use UIEffectCapturedImage to blur the background of a menu.<br>UIEffectCapturedImage applies an effect to the screen of the previous frame, without adding a camera or layer.<br>It's not a real-time post effect, so it's good performance and works well on mobile.|![](https://user-images.githubusercontent.com/12690315/46565712-735dec00-c94d-11e8-81b4-4e848d8fdb2e.png)|
|
|
||||||
|Screen transition|Use UITransitionEffect to add screen transition.<br>You can change transition texture (single channel texture).<br>Enable `Pass Ray On Hidden` option and use `Show()/Hide()` method to play transition without AnimationClip.|![](https://user-images.githubusercontent.com/12690315/46565182-dfd5ec80-c947-11e8-834f-a2ef67ad0d95.gif)|
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br><br><br><br>
|
|
||||||
## Development Note
|
|
||||||
|
|
||||||
#### How does UIEffectCapturedImage work?
|
|
||||||
|
|
||||||
![image](https://user-images.githubusercontent.com/12690315/34619147-868cb36a-f284-11e7-8122-b924ff09077f.gif)
|
|
||||||
|
|
||||||
`UIEffectCapturedImage` is similar to post effect, but uses `CommandBuffer` to give effect only on the rendering result (= captured image) of a specific frame.
|
|
||||||
This effect is non-realtime, light-weight, less-camera, blit only once, but be effective enough.
|
|
||||||
|
|
||||||
* Camera for processing effect is unnecessary.
|
|
||||||
* Process effect only once after `UIEffectCapturedImage.Capture`.
|
|
||||||
* Using reduction buffer, keep using memory size small and keep the rendering load are small.
|
|
||||||
* When GameObjects with motion are on the screen, a result texture may be stirred.
|
|
||||||
* You can overlay and display like as:
|
|
||||||
`[Screen] | [UIEffectCapturedImage] | [Dialog A] | [UIEffectCapturedImage] | [Dialog B]`.
|
|
||||||
See also [Demo](#demo).
|
|
||||||
|
|
||||||
|
|
||||||
#### Why is UIEffect lightweight?
|
|
||||||
|
|
||||||
* UIEffect pre-generates material from a combination of effects. This has the following benefits.
|
|
||||||
* Draw call batching If possible, draw calls will decrease.
|
|
||||||
* Since only the required material and shader variants are included in the build, the build size will be smaller.
|
|
||||||
|
|
||||||
|
|
||||||
#### How to control effect parameters for uGUI element WITHOUT MaterialPropertyBlock?
|
|
||||||
|
|
||||||
* In general, you can use [MaterialPropertyBlock](https://docs.unity3d.com/ScriptReference/MaterialPropertyBlock.html) for renderers to control minor changes in the material without different batches.
|
|
||||||
* However, changing the [MaterialPropertyBlock](https://docs.unity3d.com/ScriptReference/MaterialPropertyBlock.html) of the uGUI element from the script will cause different batches and draw calls to increase.
|
|
||||||
* So UIEffect encodes multiple effect parameters to UV1 channel with [IMeshModifier](https://docs.unity3d.com/ScriptReference/UI.IMeshModifier.html).
|
|
||||||
* Pack four 6-bit [0-1] (64 steps) parameters into one float value.
|
|
||||||
* The parameters are lower precision, but sufficient.
|
|
||||||
|
|
||||||
| uv1 | 6-bit [0-1] | 6-bit [0-1] | 6-bit [0-1] | 6-bit [0-1] |
|
|
||||||
|-|-|-|-|-|
|
|
||||||
| x(32bit float) | Tone level | *Empty* | Blur level | *Empty* |
|
|
||||||
| y(32bit float) | Red channel | Green channel | Blue channel | Alpha channel |
|
|
||||||
|
|
||||||
* In v3.0.0+, UIEffect uploads the parameter value to a shared texture and the shader refers to it.
|
|
||||||
This approach has the following advantages:
|
|
||||||
* More parameters for the effect are available.
|
|
||||||
* The parameter accuracy is improved from 6 bits to 8 bits.
|
|
||||||
* ModifyMesh is not called when parameter value is changed.
|
|
||||||
|
|
||||||
|
|
||||||
#### Note: Unity 5.6+
|
|
||||||
|
|
||||||
In Unity 5.6+, Canvas supports **Additional Shader Channels**.
|
|
||||||
Please enable `TexCoord1` to use UIEffect.
|
|
||||||
![image](https://user-images.githubusercontent.com/12690315/28405830-f4f261e8-6d68-11e7-9faf-7e5442062f59.png)
|
|
||||||
![image](https://user-images.githubusercontent.com/12690315/34560894-191b6cda-f18b-11e7-9de2-9a9d13f72ccd.png)
|
|
||||||
|
|
||||||
|
|
||||||
#### Note: if you include prefabs / scenes containing UIEffect in AssetBundle.
|
|
||||||
|
|
||||||
Use script define symbol `UIEFFECT_SEPARATE`.
|
|
||||||
Unused shader variants and materials will be excluded from AssetBundles.
|
|
||||||
|
|
||||||
||Combined mode (default)|Separated mode|
|
|
||||||
|-|-|-|
|
|
||||||
|Script define symbol| - |`UIEFFECT_SEPARATE`|
|
|
||||||
|Included in build|Only used variants|Only used variants|
|
|
||||||
|Included in AssetBundle|All variants (Heavy!)|Only used variants|
|
|
||||||
|Look in editor|![comb](https://user-images.githubusercontent.com/12690315/35324040-df4f1684-0132-11e8-9534-f958b93de158.png)|![sep](https://user-images.githubusercontent.com/12690315/35324405-fd5e89a6-0133-11e8-9d23-71ccc424fa21.png)|
|
|
||||||
|
|
||||||
|
|
||||||
#### How to improve performance?
|
|
||||||
|
|
||||||
* Use `ShaderVariantCollection` to preload shader.
|
|
||||||
https://docs.unity3d.com/Manual/OptimizingShaderLoadTime.html
|
|
||||||
* Set camera's clear flag to "Solid Color".
|
|
||||||
* Enable multi thread rendering.
|
|
||||||
|
|
||||||
|
|
||||||
#### The issue of default Outline component
|
|
||||||
|
|
||||||
Graphic with multiple outline components will generate a lot of overdraw.
|
|
||||||
|
|
||||||
![image](https://user-images.githubusercontent.com/12690315/34552373-600fdab2-f164-11e7-8565-21c15af92a93.png)
|
|
||||||
|
|
||||||
This is an overdraw view of image with three outline components.
|
|
||||||
Because there are many overdraws, it is very bright!
|
|
||||||
For each Outline component, increase the mesh by 5 times. (In the case of the Shadow component, it doubles the mesh.)
|
|
||||||
In the image above, `1 x 5 x 5 x 5 = 125` overdraws are generated.
|
|
||||||
|
|
||||||
UIShadow's 'Addition Shadow' feature solves this issue by adding only the necessary mesh, `1 + 4 + 4 + 4 = 13` overdraws are generated.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<br><br><br><br>
|
|
||||||
## License
|
|
||||||
|
|
||||||
* MIT
|
|
||||||
* © UTJ/UCL
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Author
|
|
||||||
|
|
||||||
[mob-sakai](https://github.com/mob-sakai)
|
|
||||||
[![](https://img.shields.io/twitter/follow/mob_sakai.svg?label=Follow&style=social)](https://twitter.com/intent/follow?screen_name=mob_sakai)
|
|
||||||
[![become_a_patron](https://user-images.githubusercontent.com/12690315/50731629-3b18b480-11ad-11e9-8fad-4b13f27969c1.png)](https://www.patreon.com/join/2343451?)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## See Also
|
|
||||||
|
|
||||||
* GitHub page : https://github.com/mob-sakai/UIEffect
|
|
||||||
* Releases : https://github.com/mob-sakai/UIEffect/releases
|
|
||||||
* Issue tracker : https://github.com/mob-sakai/UIEffect/issues
|
|
||||||
* Current project : https://github.com/mob-sakai/UIEffect/projects/1
|
|
||||||
* Change log : https://github.com/mob-sakai/UIEffect/blob/master/CHANGELOG.md
|
|
@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: ddc08462bf3e14c82929e462ff7823e7
|
|
||||||
timeCreated: 1502939317
|
|
||||||
licenseType: Pro
|
|
||||||
DefaultImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,9 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a75d49073646347b1955a9f9df36cc45
|
|
||||||
folderAsset: yes
|
|
||||||
timeCreated: 1527743733
|
|
||||||
licenseType: Pro
|
|
||||||
DefaultImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,9 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 04feaefc7cdee4c13abcd553a1a6e3a9
|
|
||||||
folderAsset: yes
|
|
||||||
timeCreated: 1528368324
|
|
||||||
licenseType: Pro
|
|
||||||
DefaultImporter:
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,565 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
using UnityEngine.EventSystems;
|
|
||||||
using UnityEngine.UI;
|
|
||||||
|
|
||||||
#if TMP_PRESENT
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using TMPro;
|
|
||||||
#if UNITY_EDITOR
|
|
||||||
using UnityEditor;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace Coffee.UIExtensions
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Base class for effects that modify the generated Mesh.
|
|
||||||
/// It works well not only for standard Graphic components (Image, RawImage, Text, etc.) but also for TextMeshPro and TextMeshProUGUI.
|
|
||||||
/// </summary>
|
|
||||||
[ExecuteInEditMode]
|
|
||||||
public abstract class BaseMeshEffect : UIBehaviour, IMeshModifier
|
|
||||||
{
|
|
||||||
//################################
|
|
||||||
// Constant or Static Members.
|
|
||||||
//################################
|
|
||||||
#if TMP_PRESENT
|
|
||||||
static readonly List<Vector2> s_Uv0 = new List<Vector2> (4096);
|
|
||||||
static readonly List<Vector2> s_Uv1 = new List<Vector2> (4096);
|
|
||||||
#if UNITY_2017_1_OR_NEWER
|
|
||||||
static readonly List<Vector2> s_Uv2 = new List<Vector2> (4096);
|
|
||||||
static readonly List<Vector2> s_Uv3 = new List<Vector2> (4096);
|
|
||||||
#endif
|
|
||||||
static readonly List<Vector3> s_Vertices = new List<Vector3> (4096);
|
|
||||||
static readonly List<int> s_Indices = new List<int> (4096);
|
|
||||||
static readonly List<Vector3> s_Normals = new List<Vector3> (4096);
|
|
||||||
static readonly List<Vector4> s_Tangents = new List<Vector4> (4096);
|
|
||||||
static readonly List<Color32> s_Colors = new List<Color32> (4096);
|
|
||||||
static readonly VertexHelper s_VertexHelper = new VertexHelper ();
|
|
||||||
static readonly List<TMP_SubMeshUI> s_SubMeshUIs = new List<TMP_SubMeshUI> (4096);
|
|
||||||
static readonly List<Mesh> s_Meshes = new List<Mesh> (4096);
|
|
||||||
static readonly List<UIVertex> s_UIVertices = new List<UIVertex> (4096);
|
|
||||||
static readonly List<BaseMeshEffect> s_TmpEffects = new List<BaseMeshEffect>(4);
|
|
||||||
#endif
|
|
||||||
static readonly Material[] s_EmptyMaterials = new Material[0];
|
|
||||||
|
|
||||||
|
|
||||||
//################################
|
|
||||||
// Public Members.
|
|
||||||
//################################
|
|
||||||
/// <summary>
|
|
||||||
/// The Graphic attached to this GameObject.
|
|
||||||
/// </summary>
|
|
||||||
public Graphic graphic { get { Initialize(); return _graphic; } }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The CanvasRenderer attached to this GameObject.
|
|
||||||
/// </summary>
|
|
||||||
public CanvasRenderer canvasRenderer { get { Initialize(); return _canvasRenderer; } }
|
|
||||||
|
|
||||||
#if TMP_PRESENT
|
|
||||||
/// <summary>
|
|
||||||
/// The TMP_Text attached to this GameObject.
|
|
||||||
/// </summary>
|
|
||||||
public TMP_Text textMeshPro { get { Initialize (); return _textMeshPro; } }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The RectTransform attached to this GameObject.
|
|
||||||
/// </summary>
|
|
||||||
public RectTransform rectTransform { get { Initialize(); return _rectTransform; } }
|
|
||||||
|
|
||||||
#if UNITY_5_6_OR_NEWER
|
|
||||||
/// <summary>
|
|
||||||
/// Additional canvas shader channels to use this component.
|
|
||||||
/// </summary>
|
|
||||||
public virtual AdditionalCanvasShaderChannels requiredChannels { get { return AdditionalCanvasShaderChannels.None; } }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Is TextMeshPro or TextMeshProUGUI attached to this GameObject?
|
|
||||||
/// </summary>
|
|
||||||
public bool isTMPro
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
#if TMP_PRESENT
|
|
||||||
return textMeshPro != null;
|
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// The material for rendering.
|
|
||||||
/// </summary>
|
|
||||||
public virtual Material material
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
|
|
||||||
#if TMP_PRESENT
|
|
||||||
if (textMeshPro)
|
|
||||||
{
|
|
||||||
return textMeshPro.fontSharedMaterial;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
if (graphic)
|
|
||||||
{
|
|
||||||
return graphic.material;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
#if TMP_PRESENT
|
|
||||||
if (textMeshPro)
|
|
||||||
{
|
|
||||||
textMeshPro.fontSharedMaterial = value;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
if (graphic)
|
|
||||||
{
|
|
||||||
graphic.material = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public virtual Material[] materials
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
|
|
||||||
#if TMP_PRESENT
|
|
||||||
if (textMeshPro)
|
|
||||||
{
|
|
||||||
return textMeshPro.fontSharedMaterials ?? s_EmptyMaterials;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
if (graphic)
|
|
||||||
{
|
|
||||||
_materials[0] = graphic.material;
|
|
||||||
return _materials;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return s_EmptyMaterials;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Call used to modify mesh. (legacy)
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="mesh">Mesh.</param>
|
|
||||||
public virtual void ModifyMesh(Mesh mesh)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Call used to modify mesh.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="vh">VertexHelper.</param>
|
|
||||||
public virtual void ModifyMesh(VertexHelper vh)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Mark the vertices as dirty.
|
|
||||||
/// </summary>
|
|
||||||
public virtual void SetVerticesDirty()
|
|
||||||
{
|
|
||||||
#if TMP_PRESENT
|
|
||||||
if (textMeshPro)
|
|
||||||
{
|
|
||||||
foreach (var info in textMeshPro.textInfo.meshInfo)
|
|
||||||
{
|
|
||||||
var mesh = info.mesh;
|
|
||||||
if (mesh)
|
|
||||||
{
|
|
||||||
mesh.Clear ();
|
|
||||||
mesh.vertices = info.vertices;
|
|
||||||
mesh.uv = info.uvs0;
|
|
||||||
mesh.uv2 = info.uvs2;
|
|
||||||
mesh.colors32 = info.colors32;
|
|
||||||
mesh.normals = info.normals;
|
|
||||||
mesh.tangents = info.tangents;
|
|
||||||
mesh.triangles = info.triangles;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (canvasRenderer)
|
|
||||||
{
|
|
||||||
canvasRenderer.SetMesh (textMeshPro.mesh);
|
|
||||||
|
|
||||||
GetComponentsInChildren (false, s_SubMeshUIs);
|
|
||||||
foreach (var sm in s_SubMeshUIs)
|
|
||||||
{
|
|
||||||
sm.canvasRenderer.SetMesh (sm.mesh);
|
|
||||||
}
|
|
||||||
s_SubMeshUIs.Clear ();
|
|
||||||
}
|
|
||||||
textMeshPro.havePropertiesChanged = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
#endif
|
|
||||||
if (graphic)
|
|
||||||
{
|
|
||||||
graphic.SetVerticesDirty();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ShowTMProWarning(Shader shader, Shader mobileShader, Shader spriteShader, System.Action<Material> onCreatedMaterial)
|
|
||||||
{
|
|
||||||
#if UNITY_EDITOR && TMP_PRESENT
|
|
||||||
if(!textMeshPro || !textMeshPro.fontSharedMaterial)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Is the material preset for dissolve?
|
|
||||||
Material m = textMeshPro.fontSharedMaterial;
|
|
||||||
if (m.shader != shader && m.shader != mobileShader)
|
|
||||||
{
|
|
||||||
EditorGUILayout.BeginHorizontal ();
|
|
||||||
EditorGUILayout.HelpBox (string.Format("{0} requires '{1}' or '{2}' as a shader for material preset.", GetType().Name, shader.name, mobileShader.name), MessageType.Warning);
|
|
||||||
if(GUILayout.Button ("Fix"))
|
|
||||||
{
|
|
||||||
var correctShader = m.shader.name.Contains ("Mobile") ? mobileShader : shader;
|
|
||||||
textMeshPro.fontSharedMaterial = ModifyTMProMaterialPreset (m, correctShader, onCreatedMaterial);
|
|
||||||
}
|
|
||||||
EditorGUILayout.EndHorizontal ();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Is the sprite asset for dissolve?
|
|
||||||
TMP_SpriteAsset spriteAsset = textMeshPro.spriteAsset ?? TMP_Settings.GetSpriteAsset ();
|
|
||||||
// Sprite asset might not exist at all
|
|
||||||
if(spriteAsset == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
m = spriteAsset.material;
|
|
||||||
if (m && m.shader != spriteShader && textMeshPro.richText && textMeshPro.text.Contains("<sprite="))
|
|
||||||
{
|
|
||||||
EditorGUILayout.BeginHorizontal ();
|
|
||||||
EditorGUILayout.HelpBox (string.Format ("{0} requires '{1}' as a shader for sprite asset.", GetType().Name,spriteShader.name), MessageType.Warning);
|
|
||||||
if (GUILayout.Button ("Fix"))
|
|
||||||
{
|
|
||||||
GetComponentsInChildren<TMP_SubMesh> ().Select (x => x.gameObject).ToList ().ForEach (DestroyImmediate);
|
|
||||||
GetComponentsInChildren<TMP_SubMeshUI> ().Select (x => x.gameObject).ToList ().ForEach (DestroyImmediate);
|
|
||||||
textMeshPro.spriteAsset = ModifyTMProSpriteAsset (m, spriteShader, onCreatedMaterial);
|
|
||||||
}
|
|
||||||
EditorGUILayout.EndHorizontal ();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Material ModifyTMProMaterialPreset (Material baseMaterial, Shader shader, System.Action<Material> onCreatedMaterial)
|
|
||||||
{
|
|
||||||
string path = AssetDatabase.GetAssetPath (baseMaterial);
|
|
||||||
string filename = Path.GetFileNameWithoutExtension (path) + " (" + GetType ().Name + ")";
|
|
||||||
Material mat = Resources.Load<Material> (TMP_Settings.defaultFontAssetPath + filename);
|
|
||||||
if (!mat)
|
|
||||||
{
|
|
||||||
mat = new Material (baseMaterial)
|
|
||||||
{
|
|
||||||
shaderKeywords = baseMaterial.shaderKeywords,
|
|
||||||
shader = shader,
|
|
||||||
};
|
|
||||||
onCreatedMaterial (mat);
|
|
||||||
AssetDatabase.CreateAsset (mat, Path.GetDirectoryName (path) + "/" + filename + ".mat");
|
|
||||||
|
|
||||||
EditorUtility.FocusProjectWindow ();
|
|
||||||
EditorGUIUtility.PingObject (mat);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
mat.shader = shader;
|
|
||||||
}
|
|
||||||
EditorUtility.SetDirty (mat);
|
|
||||||
return mat;
|
|
||||||
}
|
|
||||||
|
|
||||||
TMP_SpriteAsset ModifyTMProSpriteAsset (Material baseMaterial, Shader shader, System.Action<Material> onCreatedMaterial)
|
|
||||||
{
|
|
||||||
string path = AssetDatabase.GetAssetPath (baseMaterial);
|
|
||||||
string filename = Path.GetFileNameWithoutExtension (path) + " (" + this.GetType ().Name + ")";
|
|
||||||
TMP_SpriteAsset spriteAsset = Resources.Load<TMP_SpriteAsset> (TMP_Settings.defaultSpriteAssetPath + filename);
|
|
||||||
if (!spriteAsset)
|
|
||||||
{
|
|
||||||
AssetDatabase.CopyAsset (path, Path.GetDirectoryName (path) + "/" + filename + ".mat");
|
|
||||||
spriteAsset = Resources.Load<TMP_SpriteAsset> (TMP_Settings.defaultSpriteAssetPath + filename);
|
|
||||||
spriteAsset.material.shader = shader;
|
|
||||||
spriteAsset.material.name = shader.name;
|
|
||||||
onCreatedMaterial (spriteAsset.material);
|
|
||||||
|
|
||||||
EditorUtility.FocusProjectWindow ();
|
|
||||||
EditorGUIUtility.PingObject (spriteAsset);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
spriteAsset.material.shader = shader;
|
|
||||||
}
|
|
||||||
EditorUtility.SetDirty (spriteAsset);
|
|
||||||
return spriteAsset;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//################################
|
|
||||||
// Protected Members.
|
|
||||||
//################################
|
|
||||||
/// <summary>
|
|
||||||
/// Should the effect modify the mesh directly for TMPro?
|
|
||||||
/// </summary>
|
|
||||||
protected virtual bool isLegacyMeshModifier { get { return false; } }
|
|
||||||
|
|
||||||
|
|
||||||
protected virtual void Initialize()
|
|
||||||
{
|
|
||||||
if (!_initialized)
|
|
||||||
{
|
|
||||||
_initialized = true;
|
|
||||||
_graphic = _graphic ?? GetComponent<Graphic>();
|
|
||||||
_canvasRenderer = _canvasRenderer ?? GetComponent<CanvasRenderer>();
|
|
||||||
_rectTransform = _rectTransform ?? GetComponent<RectTransform>();
|
|
||||||
#if TMP_PRESENT
|
|
||||||
_textMeshPro = _textMeshPro ?? GetComponent<TMP_Text> ();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// This function is called when the object becomes enabled and active.
|
|
||||||
/// </summary>
|
|
||||||
protected override void OnEnable()
|
|
||||||
{
|
|
||||||
_initialized = false;
|
|
||||||
SetVerticesDirty();
|
|
||||||
#if TMP_PRESENT
|
|
||||||
if (textMeshPro)
|
|
||||||
{
|
|
||||||
TMPro_EventManager.TEXT_CHANGED_EVENT.Add (OnTextChanged);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if UNITY_EDITOR && TMP_PRESENT
|
|
||||||
if (graphic && textMeshPro)
|
|
||||||
{
|
|
||||||
GraphicRebuildTracker.TrackGraphic (graphic);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if UNITY_5_6_OR_NEWER
|
|
||||||
if (graphic)
|
|
||||||
{
|
|
||||||
AdditionalCanvasShaderChannels channels = requiredChannels;
|
|
||||||
var canvas = graphic.canvas;
|
|
||||||
if (canvas && (canvas.additionalShaderChannels & channels) != channels)
|
|
||||||
{
|
|
||||||
Debug.LogWarningFormat(this, "Enable {1} of Canvas.additionalShaderChannels to use {0}.", GetType().Name, channels);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// This function is called when the behaviour becomes disabled () or inactive.
|
|
||||||
/// </summary>
|
|
||||||
protected override void OnDisable()
|
|
||||||
{
|
|
||||||
#if TMP_PRESENT
|
|
||||||
TMPro_EventManager.TEXT_CHANGED_EVENT.Remove (OnTextChanged);
|
|
||||||
#endif
|
|
||||||
SetVerticesDirty();
|
|
||||||
|
|
||||||
#if UNITY_EDITOR && TMP_PRESENT
|
|
||||||
if (graphic && textMeshPro)
|
|
||||||
{
|
|
||||||
GraphicRebuildTracker.UnTrackGraphic (graphic);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// LateUpdate is called every frame, if the Behaviour is enabled.
|
|
||||||
/// </summary>
|
|
||||||
protected virtual void LateUpdate()
|
|
||||||
{
|
|
||||||
#if TMP_PRESENT
|
|
||||||
if (textMeshPro)
|
|
||||||
{
|
|
||||||
if (textMeshPro.havePropertiesChanged || _isTextMeshProActive != textMeshPro.isActiveAndEnabled)
|
|
||||||
{
|
|
||||||
SetVerticesDirty ();
|
|
||||||
}
|
|
||||||
_isTextMeshProActive = textMeshPro.isActiveAndEnabled;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Callback for when properties have been changed by animation.
|
|
||||||
/// </summary>
|
|
||||||
protected override void OnDidApplyAnimationProperties()
|
|
||||||
{
|
|
||||||
SetVerticesDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
|
||||||
/// <summary>
|
|
||||||
/// This function is called when the script is loaded or a value is changed in the inspector (Called in the editor only).
|
|
||||||
/// </summary>
|
|
||||||
protected override void OnValidate()
|
|
||||||
{
|
|
||||||
SetVerticesDirty();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
//################################
|
|
||||||
// Private Members.
|
|
||||||
//################################
|
|
||||||
bool _initialized;
|
|
||||||
CanvasRenderer _canvasRenderer;
|
|
||||||
RectTransform _rectTransform;
|
|
||||||
Graphic _graphic;
|
|
||||||
Material[] _materials = new Material[1];
|
|
||||||
|
|
||||||
#if TMP_PRESENT
|
|
||||||
bool _isTextMeshProActive;
|
|
||||||
TMP_Text _textMeshPro;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Called when any TextMeshPro generated the mesh.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="obj">TextMeshPro object.</param>
|
|
||||||
void OnTextChanged (Object obj)
|
|
||||||
{
|
|
||||||
// Skip if the object is different from the current object or the text is empty.
|
|
||||||
var textInfo = textMeshPro.textInfo;
|
|
||||||
if (textMeshPro != obj || textInfo.characterCount - textInfo.spaceCount <= 0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
GetComponents<BaseMeshEffect>(s_TmpEffects);
|
|
||||||
for (int i = 0; i < s_TmpEffects.Count; i++)
|
|
||||||
{
|
|
||||||
if (s_TmpEffects[i].enabled)
|
|
||||||
{
|
|
||||||
if (s_TmpEffects[i] == this)
|
|
||||||
break;
|
|
||||||
else
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Collect the meshes.
|
|
||||||
s_Meshes.Clear ();
|
|
||||||
foreach (var info in textInfo.meshInfo)
|
|
||||||
{
|
|
||||||
s_Meshes.Add (info.mesh);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Modify the meshes.
|
|
||||||
foreach (var e in s_TmpEffects)
|
|
||||||
{
|
|
||||||
if (!e.enabled)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (e.isLegacyMeshModifier)
|
|
||||||
{
|
|
||||||
// Legacy mode: Modify the meshes directly.
|
|
||||||
foreach (var m in s_Meshes)
|
|
||||||
{
|
|
||||||
if (m)
|
|
||||||
{
|
|
||||||
e.ModifyMesh(m);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Convert meshes to VertexHelpers and modify them.
|
|
||||||
foreach (var m in s_Meshes)
|
|
||||||
{
|
|
||||||
if (m)
|
|
||||||
{
|
|
||||||
FillVertexHelper(s_VertexHelper, m);
|
|
||||||
e.ModifyMesh(s_VertexHelper);
|
|
||||||
s_VertexHelper.FillMesh(m);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the modified meshes to the CanvasRenderers (for UI only).
|
|
||||||
if (canvasRenderer)
|
|
||||||
{
|
|
||||||
canvasRenderer.SetMesh (textMeshPro.mesh);
|
|
||||||
GetComponentsInChildren (false, s_SubMeshUIs);
|
|
||||||
foreach (var sm in s_SubMeshUIs)
|
|
||||||
{
|
|
||||||
sm.canvasRenderer.SetMesh (sm.mesh);
|
|
||||||
}
|
|
||||||
s_SubMeshUIs.Clear ();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clear.
|
|
||||||
s_Meshes.Clear ();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FillVertexHelper (VertexHelper vh, Mesh mesh)
|
|
||||||
{
|
|
||||||
vh.Clear ();
|
|
||||||
|
|
||||||
mesh.GetVertices (s_Vertices);
|
|
||||||
mesh.GetColors (s_Colors);
|
|
||||||
mesh.GetUVs (0, s_Uv0);
|
|
||||||
mesh.GetUVs (1, s_Uv1);
|
|
||||||
mesh.GetNormals (s_Normals);
|
|
||||||
mesh.GetTangents (s_Tangents);
|
|
||||||
mesh.GetIndices (s_Indices, 0);
|
|
||||||
|
|
||||||
#if UNITY_2017_1_OR_NEWER
|
|
||||||
mesh.GetUVs (2, s_Uv2);
|
|
||||||
mesh.GetUVs (3, s_Uv3);
|
|
||||||
bool useUv2 = 0 < s_Uv2.Count;
|
|
||||||
bool useUv3 = 0 < s_Uv3.Count;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
s_UIVertices.Clear();
|
|
||||||
UIVertex v = default(UIVertex);
|
|
||||||
for (int i = 0; i < s_Vertices.Count; i++)
|
|
||||||
{
|
|
||||||
v.position = s_Vertices[i];
|
|
||||||
v.color = s_Colors[i];
|
|
||||||
v.uv0 = s_Uv0[i];
|
|
||||||
v.uv1 = s_Uv1[i];
|
|
||||||
#if UNITY_2017_1_OR_NEWER
|
|
||||||
if (useUv2 && i < s_Uv2.Count)
|
|
||||||
v.uv2 = s_Uv2[i];
|
|
||||||
if (useUv3 && i < s_Uv3.Count)
|
|
||||||
v.uv3 = s_Uv3[i];
|
|
||||||
#endif
|
|
||||||
v.normal = s_Normals[i];
|
|
||||||
v.tangent = s_Tangents[i];
|
|
||||||
|
|
||||||
s_UIVertices.Add(v);
|
|
||||||
}
|
|
||||||
s_VertexHelper.AddUIVertexStream(s_UIVertices, s_Indices);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 229ee7044e2514b0e9bd9fd40a2baa3a
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,13 +0,0 @@
|
|||||||
namespace Coffee.UIExtensions
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Blur effect mode.
|
|
||||||
/// </summary>
|
|
||||||
public enum BlurMode
|
|
||||||
{
|
|
||||||
None = 0,
|
|
||||||
FastBlur = 1,
|
|
||||||
MediumBlur = 2,
|
|
||||||
DetailBlur = 3,
|
|
||||||
}
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user