This commit is contained in:
2024-10-16 00:03:41 +08:00
commit 897058435c
5033 changed files with 1009728 additions and 0 deletions

37
.gitignore vendored Normal file
View File

@@ -0,0 +1,37 @@
# ---> Unity
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/UIElementsSchema/
/Logs/
/.idea/
# Autogenerated VS/MD solution and project files
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.keep
/Library
/Temp
/Obj
/Build
/Bundles
/UserSettings
/Assets/StreamingAssets/GameRes
/.svn/
/.idea/
# Unity3D generated meta files
#*.pidb.meta
# Unity3D Generated File On Crash Reports
sysinfo.txt

View File

@@ -0,0 +1,92 @@
%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: 11145981673336645838492a2d98e247, type: 3}
m_Name: 2D Renderer Data
m_EditorClassIdentifier:
debugShaders:
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3}
hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
m_RendererFeatures:
- {fileID: 7812257419419567508}
m_RendererFeatureMap: 94c5695abbb66a6c
m_UseNativeRenderPass: 0
m_TransparencySortMode: 0
m_TransparencySortAxis: {x: 0, y: 1, z: 0}
m_HDREmulationScale: 1
m_LightRenderTextureScale: 1
m_LightBlendStyles:
- name: Multiply
maskTextureChannel: 0
blendMode: 1
- name: Additive
maskTextureChannel: 0
blendMode: 0
- name: Multiply with Mask
maskTextureChannel: 1
blendMode: 1
- name: Additive with Mask
maskTextureChannel: 1
blendMode: 0
m_UseDepthStencilBuffer: 1
m_UseCameraSortingLayersTexture: 0
m_CameraSortingLayersTextureBound: -1
m_CameraSortingLayerDownsamplingMethod: 0
m_MaxLightRenderTextureCount: 16
m_MaxShadowRenderTextureCount: 1
m_ShapeLightShader: {fileID: 4800000, guid: d79e1c784eaf80c4585c0be7391f757a, type: 3}
m_ShapeLightVolumeShader: {fileID: 4800000, guid: 7e60080c8cd24a2468cb08b4bfee5606, type: 3}
m_PointLightShader: {fileID: 4800000, guid: e35a31e1679aeff489e202f5cc4853d5, type: 3}
m_PointLightVolumeShader: {fileID: 4800000, guid: c7d04ca57e5449d49ad9cee1c604bc26, type: 3}
m_CoreBlitShader: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3}
m_BlitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3}
m_CoreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3}
m_SamplingShader: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
m_ProjectedShadowShader: {fileID: 4800000, guid: ce09d4a80b88c5a4eb9768fab4f1ee00, type: 3}
m_SpriteShadowShader: {fileID: 4800000, guid: 44fc62292b65ab04eabcf310e799ccf6, type: 3}
m_SpriteUnshadowShader: {fileID: 4800000, guid: de02b375720b5c445afe83cd483bedf3, type: 3}
m_GeometryUnshadowShader: {fileID: 4800000, guid: 77774d9009bb81447b048c907d4c6273, type: 3}
m_FallbackErrorShader: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
m_PostProcessData: {fileID: 11400000, guid: 41439944d30ece34e96484bdb6645b55, type: 2}
m_FallOffLookup: {fileID: 2800000, guid: 5688ab254e4c0634f8d6c8e0792331ca, type: 3}
m_DefaultMaterialType: 0
m_DefaultCustomMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2}
m_DefaultMaskMaterial: {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2}
--- !u!114 &7812257419419567508
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: 70335caa479e4bfaa88464f8ee13c830, type: 3}
m_Name: GaussBlurFeature
m_EditorClassIdentifier:
m_Active: 1
renderPassEvent: 500
setting:
enable: 1
grayMaterial: {fileID: 2100000, guid: 2890003b9d441274483b3baf1b784f65, type: 2}
grayColor: {r: 0.7056604, g: 0.7056604, b: 0.7056604, a: 1}
isGray: 1
isBlur: 1
blurMaterial: {fileID: 2100000, guid: 0770d109ad4afdf44a7ad1eaec6c3839, type: 2}
blurProgress: 0
grayScale: 0
colorChannel_R: 1
colorChannel_G: 1
colorChannel_B: 1
blurPasses: 1
cmdName: GaussBlurFeature

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a50c525dd9da71949be479007779c5ff
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,63 @@
%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: 11145981673336645838492a2d98e247, type: 3}
m_Name: 2D Renderer Data_UGUI
m_EditorClassIdentifier:
debugShaders:
debugReplacementPS: {fileID: 4800000, guid: cf852408f2e174538bcd9b7fda1c5ae7, type: 3}
hdrDebugViewPS: {fileID: 4800000, guid: 573620ae32aec764abd4d728906d2587, type: 3}
m_RendererFeatures: []
m_RendererFeatureMap:
m_UseNativeRenderPass: 0
m_TransparencySortMode: 0
m_TransparencySortAxis: {x: 0, y: 1, z: 0}
m_HDREmulationScale: 1
m_LightRenderTextureScale: 0.5
m_LightBlendStyles:
- name: Multiply
maskTextureChannel: 0
blendMode: 1
- name: Additive
maskTextureChannel: 0
blendMode: 0
- name: Multiply with Mask
maskTextureChannel: 1
blendMode: 1
- name: Additive with Mask
maskTextureChannel: 1
blendMode: 0
m_UseDepthStencilBuffer: 0
m_UseCameraSortingLayersTexture: 0
m_CameraSortingLayersTextureBound: -1
m_CameraSortingLayerDownsamplingMethod: 0
m_MaxLightRenderTextureCount: 16
m_MaxShadowRenderTextureCount: 1
m_ShapeLightShader: {fileID: 4800000, guid: d79e1c784eaf80c4585c0be7391f757a, type: 3}
m_ShapeLightVolumeShader: {fileID: 4800000, guid: 7e60080c8cd24a2468cb08b4bfee5606, type: 3}
m_PointLightShader: {fileID: 4800000, guid: e35a31e1679aeff489e202f5cc4853d5, type: 3}
m_PointLightVolumeShader: {fileID: 4800000, guid: c7d04ca57e5449d49ad9cee1c604bc26, type: 3}
m_CoreBlitShader: {fileID: 4800000, guid: 93446b5c5339d4f00b85c159e1159b7c, type: 3}
m_BlitHDROverlay: {fileID: 4800000, guid: a89bee29cffa951418fc1e2da94d1959, type: 3}
m_CoreBlitColorAndDepthPS: {fileID: 4800000, guid: d104b2fc1ca6445babb8e90b0758136b, type: 3}
m_SamplingShader: {fileID: 4800000, guid: 04c410c9937594faa893a11dceb85f7e, type: 3}
m_ProjectedShadowShader: {fileID: 4800000, guid: ce09d4a80b88c5a4eb9768fab4f1ee00, type: 3}
m_SpriteShadowShader: {fileID: 4800000, guid: 44fc62292b65ab04eabcf310e799ccf6, type: 3}
m_SpriteUnshadowShader: {fileID: 4800000, guid: de02b375720b5c445afe83cd483bedf3, type: 3}
m_GeometryUnshadowShader: {fileID: 4800000, guid: 77774d9009bb81447b048c907d4c6273, type: 3}
m_FallbackErrorShader: {fileID: 4800000, guid: e6e9a19c3678ded42a3bc431ebef7dbd, type: 3}
m_PostProcessData: {fileID: 0}
m_FallOffLookup: {fileID: 2800000, guid: 5688ab254e4c0634f8d6c8e0792331ca, type: 3}
m_DefaultMaterialType: 0
m_DefaultCustomMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_DefaultLitMaterial: {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_DefaultUnlitMaterial: {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, type: 2}
m_DefaultMaskMaterial: {fileID: 2100000, guid: 15d0c3709176029428a0da2f8cecf0b5, type: 2}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 027626fd3771b5545acbbc85284c62c1
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,115 @@
%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: bf2edee5c58d82540a51f03df9d42094, type: 3}
m_Name: 2D Universal Render Pipeline Asset
m_EditorClassIdentifier:
k_AssetVersion: 11
k_AssetPreviousVersion: 11
m_RendererType: 1
m_RendererData: {fileID: 0}
m_RendererDataList:
- {fileID: 11400000, guid: 955e98c98ee888049885b0f58f9c5727, type: 2}
- {fileID: 11400000, guid: 4338fd9cd4c87644587d8bb02403b507, type: 2}
m_DefaultRendererIndex: 0
m_RequireDepthTexture: 0
m_RequireOpaqueTexture: 0
m_OpaqueDownsampling: 0
m_SupportsTerrainHoles: 0
m_SupportsHDR: 0
m_HDRColorBufferPrecision: 0
m_MSAA: 1
m_RenderScale: 1
m_UpscalingFilter: 0
m_FsrOverrideSharpness: 0
m_FsrSharpness: 0.92
m_EnableLODCrossFade: 0
m_LODCrossFadeDitheringType: 0
m_ShEvalMode: 0
m_MainLightRenderingMode: 1
m_MainLightShadowsSupported: 1
m_MainLightShadowmapResolution: 512
m_AdditionalLightsRenderingMode: 0
m_AdditionalLightsPerObjectLimit: 4
m_AdditionalLightShadowsSupported: 0
m_AdditionalLightsShadowmapResolution: 2048
m_AdditionalLightsShadowResolutionTierLow: 256
m_AdditionalLightsShadowResolutionTierMedium: 512
m_AdditionalLightsShadowResolutionTierHigh: 1024
m_ReflectionProbeBlending: 0
m_ReflectionProbeBoxProjection: 0
m_ShadowDistance: 50
m_ShadowCascadeCount: 1
m_Cascade2Split: 0.25
m_Cascade3Split: {x: 0.1, y: 0.3}
m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467}
m_CascadeBorder: 0.2
m_ShadowDepthBias: 1
m_ShadowNormalBias: 1
m_AnyShadowsSupported: 1
m_SoftShadowsSupported: 0
m_ConservativeEnclosingSphere: 1
m_NumIterationsEnclosingSphere: 64
m_SoftShadowQuality: 2
m_AdditionalLightsCookieResolution: 2048
m_AdditionalLightsCookieFormat: 3
m_UseSRPBatcher: 1
m_SupportsDynamicBatching: 0
m_MixedLightingSupported: 1
m_SupportsLightCookies: 1
m_SupportsLightLayers: 0
m_DebugLevel: 0
m_StoreActionsOptimization: 0
m_EnableRenderGraph: 0
m_UseAdaptivePerformance: 1
m_ColorGradingMode: 0
m_ColorGradingLutSize: 32
m_UseFastSRGBLinearConversion: 1
m_SupportDataDrivenLensFlare: 1
m_ShadowType: 1
m_LocalShadowsSupported: 0
m_LocalShadowsAtlasResolution: 256
m_MaxPixelLights: 0
m_ShadowAtlasResolution: 256
m_VolumeFrameworkUpdateMode: 0
m_Textures:
blueNoise64LTex: {fileID: 2800000, guid: e3d24661c1e055f45a7560c033dbb837, type: 3}
bayerMatrixTex: {fileID: 2800000, guid: f9ee4ed84c1d10c49aabb9b210b0fc44, type: 3}
m_PrefilteringModeMainLightShadows: 1
m_PrefilteringModeAdditionalLight: 4
m_PrefilteringModeAdditionalLightShadows: 1
m_PrefilterXRKeywords: 0
m_PrefilteringModeForwardPlus: 1
m_PrefilteringModeDeferredRendering: 1
m_PrefilteringModeScreenSpaceOcclusion: 1
m_PrefilterDebugKeywords: 0
m_PrefilterWriteRenderingLayers: 0
m_PrefilterHDROutput: 0
m_PrefilterSSAODepthNormals: 0
m_PrefilterSSAOSourceDepthLow: 0
m_PrefilterSSAOSourceDepthMedium: 0
m_PrefilterSSAOSourceDepthHigh: 0
m_PrefilterSSAOInterleaved: 0
m_PrefilterSSAOBlueNoise: 0
m_PrefilterSSAOSampleCountLow: 0
m_PrefilterSSAOSampleCountMedium: 0
m_PrefilterSSAOSampleCountHigh: 0
m_PrefilterDBufferMRT1: 0
m_PrefilterDBufferMRT2: 0
m_PrefilterDBufferMRT3: 0
m_PrefilterSoftShadowsQualityLow: 0
m_PrefilterSoftShadowsQualityMedium: 0
m_PrefilterSoftShadowsQualityHigh: 0
m_PrefilterSoftShadows: 0
m_PrefilterScreenCoord: 0
m_PrefilterNativeRenderPass: 0
m_ShaderVariantLogLevel: 0
m_ShadowCascades: 0

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 237e19cc467d5fe47a65c793118c6881
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

8
Assets/3rd.meta Normal file
View File

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

8
Assets/3rd/Editor.meta Normal file
View File

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

View File

@@ -0,0 +1,230 @@
using UnityEditor;
using UnityEditor.Compilation;
using System.Diagnostics;
using Debug = UnityEngine.Debug;
using UnityEngine;
using System.Reflection;
/// <summary>
/// ____DESC: 手动reload domain 工具
/// </summary>
public class ScriptCompileReloadTools
{
/* 说明
* 关于域重载 https://docs.unity.cn/cn/2021.3/Manual/DomainReloading.html
* EditorApplication.LockReloadAssemblies()和 EditorApplication.UnlockReloadAssemblies() 最好成对
* 如果不小心LockReloadAssemblies3次 但是只UnlockReloadAssemblies了一次 那么还是不会重载 必须也要但是只UnlockReloadAssemblies3次
*/
const string menuEnableManualReload = "Tools/Script/开启手动Reload Domain";
const string menuDisenableManualReload ="Tools/Script/关闭手动Reload Domain";
const string menuRealodDomain ="Tools/Script/Unlock Reload %t";
const string kManualReloadDomain = "ManualReloadDomain";
const string kFirstEnterUnity = "FirstEnterUnity"; //是否首次进入unity
const string kReloadDomainTimer = "ReloadDomainTimer";//计时
/**************************************************/
//编译时间
static Stopwatch compileSW = new Stopwatch();
//是否手动reload
static bool IsManualReload => PlayerPrefs.GetInt(kManualReloadDomain, -1) == 1;
//缓存数据 域重载之后数据会变成false 如果不是false 那么就要重载
static bool tempData = false;
//https://github.com/INeatFreak/unity-background-recompiler 来自这个库 反射获取是否锁住
static MethodInfo CanReloadAssembliesMethod;
static bool IsLocked
{
get
{
if (CanReloadAssembliesMethod == null)
{
// source: https://github.com/Unity-Technologies/UnityCsReference/blob/master/Editor/Mono/EditorApplication.bindings.cs#L154
CanReloadAssembliesMethod = typeof(EditorApplication).GetMethod("CanReloadAssemblies", BindingFlags.NonPublic | BindingFlags.Static);
if (CanReloadAssembliesMethod == null)
Debug.LogError("Can't find CanReloadAssemblies method. It might have been renamed or removed.");
}
return !(bool)CanReloadAssembliesMethod.Invoke(null, null);
}
}
/**************************************************/
[InitializeOnLoadMethod]
static void InitCompile()
{
//**************不需要这个可以注释********************************
CompilationPipeline.compilationStarted -= OnCompilationStarted;
CompilationPipeline.compilationStarted += OnCompilationStarted;
CompilationPipeline.compilationFinished -= OnCompilationFinished;
CompilationPipeline.compilationFinished += OnCompilationFinished;
//**************************************************************
//域重载事件监听
AssemblyReloadEvents.beforeAssemblyReload -= OnBeforeAssemblyReload;
AssemblyReloadEvents.beforeAssemblyReload += OnBeforeAssemblyReload;
AssemblyReloadEvents.afterAssemblyReload -= OnAfterAssemblyReload;
AssemblyReloadEvents.afterAssemblyReload += OnAfterAssemblyReload;
EditorApplication.playModeStateChanged -= EditorApplication_playModeStateChanged;
EditorApplication.playModeStateChanged += EditorApplication_playModeStateChanged;
// 首次启动的时候 并不会马上设置
//if (PlayerPrefs.HasKey(kManualReloadDomain))
//{
// Menu.SetChecked(menuEnableManualReload, IsManualReload ? true : false);
// Menu.SetChecked(menuDisenableManualReload, IsManualReload ? false : true);
//}
FirstCheckAsync();
}
//首次打开检测
async static void FirstCheckAsync()
{
await System.Threading.Tasks.Task.Delay(100);
//判断是否首次打开
//https://docs.unity.cn/cn/2021.3/ScriptReference/SessionState.html
if (SessionState.GetBool(kFirstEnterUnity, true))
{
SessionState.SetBool(kFirstEnterUnity, false);
Menu.SetChecked(menuEnableManualReload, IsManualReload ? true : false);
Menu.SetChecked(menuDisenableManualReload, IsManualReload ? false : true);
if (IsManualReload)
{
UnlockReloadDomain();
LockRealodDomain();
}
Debug.Log($"<color=lime>当前ReloadDomain状态,是否手动: {IsManualReload}</color>");
}
}
//运行模式改变
private static void EditorApplication_playModeStateChanged(PlayModeStateChange state)
{
switch (state)
{
case PlayModeStateChange.EnteredEditMode:
break;
case PlayModeStateChange.ExitingEditMode:
if (tempData)
{
UnlockReloadDomain();
EditorUtility.RequestScriptReload();
}
break;
case PlayModeStateChange.EnteredPlayMode:
tempData = true;
break;
case PlayModeStateChange.ExitingPlayMode:
break;
}
}
//当开始编译脚本
private static void OnCompilationStarted(object obj)
{
if (IsManualReload)
{
compileSW.Start();
Debug.Log("<color=yellow>Begin Compile</color>");
}
}
//结束编译
private static void OnCompilationFinished(object obj)
{
if (IsManualReload)
{
compileSW.Stop();
Debug.Log($"<color=yellow>End Compile 耗时:{compileSW.ElapsedMilliseconds} ms</color>");
compileSW.Reset();
}
}
//开始reload domain
private static void OnBeforeAssemblyReload()
{
if (IsManualReload)
{
Debug.Log("<color=yellow>Begin Reload Domain ......</color>");
//记录时间
SessionState.SetInt(kReloadDomainTimer, (int)(EditorApplication.timeSinceStartup * 1000));
}
}
//结束reload domain
private static void OnAfterAssemblyReload()
{
if (IsManualReload)
{
var timeMS = (int)(EditorApplication.timeSinceStartup * 1000) - SessionState.GetInt(kReloadDomainTimer, 0);
Debug.Log($"<color=yellow>End Reload Domain 耗时:{timeMS} ms</color>");
LockRealodDomain();
}
}
static void LockRealodDomain()
{
//如果没有锁住 锁住
if (!IsLocked)
{
EditorApplication.LockReloadAssemblies();
}
}
static void UnlockReloadDomain()
{
//如果锁住了 打开
if (IsLocked)
{
EditorApplication.UnlockReloadAssemblies();
}
}
[MenuItem(menuEnableManualReload)]
static void EnableManualReloadDomain()
{
Debug.Log("<color=cyan>开启手动 Reload Domain</color>");
Menu.SetChecked(menuEnableManualReload, true);
Menu.SetChecked(menuDisenableManualReload, false);
PlayerPrefs.SetInt(kManualReloadDomain, 1);
//编辑器设置 projectsetting->editor->enterPlayModeSetting
EditorSettings.enterPlayModeOptionsEnabled = true;
EditorSettings.enterPlayModeOptions = EnterPlayModeOptions.DisableDomainReload;
LockRealodDomain();
}
[MenuItem(menuDisenableManualReload)]
static void DisenableManualReloadDomain()
{
Debug.Log("<color=cyan>关闭手动 Reload Domain</color>");
Menu.SetChecked(menuEnableManualReload, false);
Menu.SetChecked(menuDisenableManualReload, true);
PlayerPrefs.SetInt(kManualReloadDomain, 0);
UnlockReloadDomain();
EditorSettings.enterPlayModeOptionsEnabled = false;
}
//手动刷新
[MenuItem(menuRealodDomain)]
static void ManualReload()
{
if (IsManualReload)
{
UnlockReloadDomain();
EditorUtility.RequestScriptReload();
}
}
}

View File

@@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: bdd8b851ba824ab989993e7390c0df5c
timeCreated: 1675183169

View File

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

View File

@@ -0,0 +1,27 @@
fileFormatVersion: 2
guid: 869a82e6f4db67049a3b7d6b73f951eb
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1 @@
/build

View File

@@ -0,0 +1,31 @@
apply plugin: 'com.android.library'
android {
compileSdkVersion 30
// buildToolsVersion '30.0.2'
lintOptions {
abortOnError false
}
defaultConfig {
minSdkVersion 17
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26+'
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 77ba741b8b6dabd45aba959b0b64136b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 48f329a73a9b9634b800079d6fcb58f0
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

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

View File

@@ -0,0 +1,36 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.foldcc.agreement_library"
xmlns:tools="http://schemas.android.com/tools">
<application
android:usesCleartextTraffic="true"
>
<!-- android:networkSecurityConfig="@xml/network_security_config"-->
<!-- tools:replace="android:networkSecurityConfig"-->
<meta-data
android:name="USER_AGREEMENT"
android:value="https://foldcc.cn/service.htm" />
<meta-data
android:name="PRIVACY_AGREEMENT"
android:value="https://foldcc.cn/privacy.htm" />
<meta-data
android:name="START_ACTIVITY"
android:value="com.unity3d.player.UnityPlayerActivity" />
<!--<meta-data-->
<!--android:name="AGREEMENT_STYLE_TYPE"-->
<!--android:value="drak" />-->
<activity
android:name="com.foldcc.agreement_library.AgreementDialogActivity"
android:launchMode="singleTop"
android:exported="true"/>
<!-- android:theme="@style/TransLateTheme"-->
<activity
android:name="com.foldcc.agreement_library.WebViewActivity"
android:launchMode="singleTop"
android:theme="@style/TransLateTheme"
android:exported="true"
/>
</application>
</manifest>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,192 @@
package com.foldcc.agreement_library;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.ForegroundColorSpan;
import android.view.View;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
public class AgreementDialogActivity extends Activity {
private TextView mTvContent, mTvTips;
private ImageView mTipsImage;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int layoutId = R.layout.activity_agreement_dialog;
// if (getMetaData("AGREEMENT_STYLE_TYPE").equals("drak")){
// layoutId = R.layout.activity_agreement_dialog_new;
// }
setContentView(layoutId);
mTvTips = findViewById(R.id.agreement_dialog_agreement_tips);
mTipsImage = findViewById(R.id.agreement_dialog_agreement_tips_img);
if (mTvTips != null) {
mTvTips.setHighlightColor(getResources().getColor(android.R.color.transparent));
mTvTips.setMovementMethod(LinkMovementMethod.getInstance());
mTvTips.setText(getAgreementTipsContent());
}
SharedPreferencesHelper.init(this, "mineF");
if (SharedPreferencesHelper.getInt("agreement", 0) != 1) {
mTvContent = findViewById(R.id.agreement_dialog_content);
initRichText();
} else {
openActivity();
finish();
}
}
private SpannableStringBuilder getAgreementTipsContent() {
String text1 = "我已同意并知晓";
final String text2 = getString(R.string.ServiceAgreementTips);
String text3 = getString(R.string.And);
final String text4 = getString(R.string.PrivacyPolicyTips);
String content = text1 + text2 + text3 + text4;
SpannableStringBuilder spannableString = new SpannableStringBuilder(content);
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View view) {
checkClick(view);
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
ds.setColor(getResources().getColor(R.color.agreementContentAndTitleColor));
}
}, 0, text1.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
spannableString.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.agreementBtnColor)), text1.length(), text1.length() + text2.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
spannableString.setSpan(new AgreementClick(true), text1.length(), text1.length() + text2.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
spannableString.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.agreementBtnColor)), text1.length() + text2.length() + text3.length(), text1.length() + text2.length() + text3.length() + text4.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
spannableString.setSpan(new AgreementClick(false), text1.length() + text2.length() + text3.length(), text1.length() + text2.length() + text3.length() + text4.length(), Spanned.SPAN_INCLUSIVE_INCLUSIVE);
return spannableString;
}
public void onRightBtnClick(View view) {
if (!isCheck){
Toast.makeText(this,getResources().getString(R.string.PleaseAgreeAgreement),Toast.LENGTH_SHORT).show();
return;
}
SharedPreferencesHelper.applyInt("agreement", 1);
openActivity();
finishCurActivity();
}
private void openActivity() {
try {
Class activity = getClassLoader().loadClass(getMetaData("START_ACTIVITY"));
Intent intent = new Intent(this, activity);
startActivity(intent);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
private void finishCurActivity() {
finish();
// this.overridePendingTransition(R.anim.dialog_scal_out, 0);
}
public void onLeftBtnClick(View view) {
System.exit(0);
}
private boolean isCheck = false;
public void checkClick(View view) {
isCheck = !isCheck;
int imgId = R.drawable.ic_select_n;
if (isCheck) {
imgId = R.drawable.ic_select_s;
} else {
imgId = R.drawable.ic_select_n;
}
mTipsImage.setImageResource(imgId);
}
public static void open(Activity activity) {
activity.startActivity(new Intent(activity, AgreementDialogActivity.class));
// activity.overridePendingTransition(R.anim.dialog_scal_in, R.anim.dialog_scal_out);
}
/**
* 初始化富文本
*/
private void initRichText() {
String text1 = "请务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包含但不限于:\n为了向你提供游戏内容、数据统计等服务我们需要搜集你的设备信息(操作系统、soc性能等)、操作日志(每局游戏统计数据等)等个人信息。你可阅读";
final String text3 = getString(R.string.ServiceAgreementTips);
String text4 = getString(R.string.And);
final String text5 = getString(R.string.PrivacyPolicyTips);
String text6 = getString(R.string.ServiceAgreementAndPrivacyPolicyConten02);
String content = text1 + text3 + text4 + text5 + text6;
SpannableStringBuilder stringBuilder = new SpannableStringBuilder(content);
stringBuilder.setSpan(new AgreementClick(true), text1.length(), (text1 + text3).length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
stringBuilder.setSpan(new AgreementClick(false), (text1 + text3 + text4).length(), (text1 + text3 + text4 + text5).length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
if (mTvContent != null) {
mTvContent.setHighlightColor(getResources().getColor(android.R.color.transparent));
mTvContent.setMovementMethod(LinkMovementMethod.getInstance());
mTvContent.setText(stringBuilder);
}
}
private class AgreementClick extends ClickableSpan {
boolean isUserAgreement = true;
public AgreementClick(boolean isUserAgreement) {
this.isUserAgreement = isUserAgreement;
}
@Override
public void onClick(@NonNull View widget) {
//用户协议点击
String title = getString(R.string.ServiceAgreementTips);
String urlTag = getMetaData("USER_AGREEMENT");
if (!isUserAgreement) {
title = getString(R.string.PrivacyPolicyTips);
urlTag = getMetaData("PRIVACY_AGREEMENT");
}
WebViewActivity.open(AgreementDialogActivity.this, title, urlTag);
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
ds.setColor(getResources().getColor(R.color.agreementBtnColor));
}
}
private String getMetaData(String metaName) {
ApplicationInfo appInfo = null;
String data = null;
try {
appInfo = AgreementDialogActivity.this.getPackageManager()
.getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
data = appInfo.metaData.getString(metaName);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return data;
}
}

View File

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

View File

@@ -0,0 +1,12 @@
package com.foldcc.agreement_library;
import android.app.Activity;
import com.foldcc.agreement_library.AgreementDialogActivity;
import com.foldcc.agreement_library.SharedPreferencesHelper;
public class AgreementTools {
public void init(Activity unityActivity) {
AgreementDialogActivity.open(unityActivity);
}
}

View File

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

View File

@@ -0,0 +1,244 @@
package com.foldcc.agreement_library;
import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.util.Log;
import java.util.Set;
public class SharedPreferencesHelper {
private static final String TAG = SharedPreferencesHelper.class.getSimpleName();
private static SharedPreferences mSharedPreferences = null;
/**
* 初始化
*
* @param applicationContext
* @param spName
*/
public static void init(Context applicationContext, String spName) {
if (TextUtils.isEmpty(spName)) {
throw new NullPointerException("When SharedPreferencesHelper init, SharedPreferences name is null!");
}
if (applicationContext == null) {
throw new NullPointerException("When SharedPreferencesHelper init, applicationContext is null!");
}
mSharedPreferences = applicationContext.getSharedPreferences(spName, Context.MODE_PRIVATE);
}
/**
* 删除key
*
* @param key The name of the preference to remove.
*/
public static void removeKey(String key) {
if (mSharedPreferences != null) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
editor.remove(key);
editor.apply();
} else {
Log.e(TAG, "mSharedPreferences is null");
}
}
public static void clear() {
if (mSharedPreferences != null) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
editor.clear();
editor.apply();
} else {
Log.e(TAG, "mSharedPreferences is null");
}
}
public static void applyInt(String key, int value) {
applyKeyValue(key, value);
}
public static void applyLong(String key, long value) {
applyKeyValue(key, value);
}
public static void applyFloat(String key, float value) {
applyKeyValue(key, value);
}
public static void applyBoolean(String key, boolean value) {
applyKeyValue(key, value);
}
public static void applyString(String key, String value) {
if (null == value) {//防止传入null时无法判断存储类型
applyKeyValue(key, "");
return;
}
applyKeyValue(key, value);
}
public static void applyStringSet(String key, Set<String> defValue) {
if (mSharedPreferences != null && null == defValue) {//防止传入null时无法判断存储类型
mSharedPreferences.edit().putStringSet(key, null).apply();
}
commitKeyValue(key, defValue);
}
public static boolean commitInt(String key, int value) {
return commitKeyValue(key, value);
}
public static boolean commitLong(String key, long value) {
return commitKeyValue(key, value);
}
public static boolean commitFloat(String key, float value) {
return commitKeyValue(key, value);
}
public static boolean commitBoolean(String key, boolean value) {
return commitKeyValue(key, value);
}
public static boolean commitString(String key, String value) {
if (null == value) {//防止传入null时无法判断存储类型
return commitKeyValue(key, "");
}
return commitKeyValue(key, value);
}
public static boolean commitStringSet(String key, Set<String> defValue) {
if (mSharedPreferences != null && null == defValue) {//防止传入null时无法判断存储类型
return mSharedPreferences.edit().putStringSet(key, null).commit();
}
return commitKeyValue(key, defValue);
}
public static int getInt(String key, int defValue) {
return (int) getValue(key, defValue);
}
public static long getLong(String key, long defValue) {
return (long) getValue(key, defValue);
}
public static float getFloat(String key, float defValue) {
return (float) getValue(key, defValue);
}
public static boolean getBoolean(String key, boolean defValue) {
return (boolean) getValue(key, defValue);
}
public static String getString(String key, String defValue) {
if (null == defValue) {//防止传入null时无法判断存储类型
return (String) getValue(key, "");
}
return (String) getValue(key, defValue);
}
public static Set<String> getStringSet(String key, Set<String> defValue) {
if (mSharedPreferences != null && null == defValue) {//防止传入null时无法判断存储类型
return mSharedPreferences.getStringSet(key, null);
}
return (Set<String>) getValue(key, defValue);
}
/**
* 异步提交保存
* 注不提供该方法给外部是因为传入的是Object类型表意不够明确使用易误导。
*
* @param key
* @param value
* @return
*/
private static void applyKeyValue(String key, Object value) {
if (mSharedPreferences == null) {
Log.e(TAG, "mSharedPreferences is null");
return;
}
SharedPreferences.Editor editor = setEditor(key, value);
editor.apply();
}
/**
* 立即提交保存,立即生效,立即返回保存到磁盘的成功与否
* 注不提供该方法给外部是因为传入的是Object类型表意不够明确使用易误导。
*
* @param key
* @param value
* @return
*/
private static boolean commitKeyValue(String key, Object value) {
if (mSharedPreferences == null) {
Log.e(TAG, "mSharedPreferences is null");
return false;
}
SharedPreferences.Editor editor = setEditor(key, value);
return editor.commit();
}
/**
* 统一保存处理
*
* @param key
* @param value
* @return
*/
private static SharedPreferences.Editor setEditor(String key, Object value) {
SharedPreferences.Editor editor = mSharedPreferences.edit();
if (value instanceof String) {
editor.putString(key, (String) value);
} else if (value instanceof Integer) {
editor.putInt(key, (Integer) value);
} else if (value instanceof Long) {
editor.putLong(key, (Long) value);
} else if (value instanceof Float) {
editor.putFloat(key, (Float) value);
} else if (value instanceof Boolean) {
editor.putBoolean(key, (Boolean) value);
} else if (value instanceof Set) {
editor.putStringSet(key, (Set<String>) value);
}
return editor;
}
/**
* 统一获取处理
*
* @param key
* @param defValue
* @return
*/
private static Object getValue(String key, Object defValue) {
if (mSharedPreferences == null) {
Log.e(TAG, "mSharedPreferences is null");
return defValue;
}
if (defValue instanceof String) {
return mSharedPreferences.getString(key, (String) defValue);
} else if (defValue instanceof Integer) {
return mSharedPreferences.getInt(key, (Integer) defValue);
} else if (defValue instanceof Long) {
return mSharedPreferences.getLong(key, (Long) defValue);
} else if (defValue instanceof Float) {
return mSharedPreferences.getFloat(key, (Float) defValue);
} else if (defValue instanceof Boolean) {
return mSharedPreferences.getBoolean(key, (Boolean) defValue);
} else if (defValue instanceof Set) {
return mSharedPreferences.getStringSet(key, (Set<String>) defValue);
}
return defValue;
}
}

View File

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

View File

@@ -0,0 +1,145 @@
package com.foldcc.agreement_library;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.Nullable;
public class WebViewActivity extends Activity {
private TextView mTitleTv;
private WebView mWebView;
private ProgressBar mProgressBar;
private String url;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
mTitleTv = findViewById(R.id.web_view_title);
mWebView = findViewById(R.id.web_view);
mProgressBar = findViewById(R.id.web_view_progress_bar);
url = getIntent().getStringExtra("url");
String title = getIntent().getStringExtra("title");
initWebView();
if (title != null && !title.equals("")) {
if (mTitleTv != null) {
mTitleTv.setText(title);
}
if (mTitleTv != null) {
mTitleTv.setVisibility(View.VISIBLE);
}
} else {
if (mTitleTv != null) {
mTitleTv.setVisibility(View.GONE);
}
}
}
public void onCancel(View view) {
finish();
}
public static void open(Activity activity, String title, String agremmentUrl) {
Intent intent = new Intent(activity, WebViewActivity.class);
intent.putExtra("title", title);
intent.putExtra("url", agremmentUrl);
activity.startActivity(intent);
}
@SuppressLint("JavascriptInterface")
private void initWebView() {
if (mWebView != null) {
mWebView.loadUrl(url);
mWebView.addJavascriptInterface(this, "android");
mWebView.setWebChromeClient(webChromeClient);
mWebView.setWebViewClient(webViewClient);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(false);
}
}
private WebViewClient webViewClient = new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
if (mProgressBar != null) {
mProgressBar.setVisibility(View.GONE);
}
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {//页面开始加载
if (mProgressBar != null) {
mProgressBar.setVisibility(View.VISIBLE);
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
};
private WebChromeClient webChromeClient = new WebChromeClient() {
@Override
public void onReceivedTitle(WebView view, String title) {
super.onReceivedTitle(view, title);
if (title != null && !title.equals("")) {
if (mTitleTv != null) {
mTitleTv.setText(title);
}
if (mTitleTv != null) {
mTitleTv.setVisibility(View.VISIBLE);
}
} else {
if (mTitleTv != null) {
mTitleTv.setVisibility(View.GONE);
}
}
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
super.onProgressChanged(view, newProgress);
if (mProgressBar != null) {
mProgressBar.setProgress(newProgress);
}
}
};
@Override
protected void onDestroy() {
super.onDestroy();
if (mWebView != null) {
mWebView.destroy();
mWebView = null;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (mWebView != null) {
if (mWebView.canGoBack() && keyCode == KeyEvent.KEYCODE_BACK) {//点击返回按钮的时候判断有没有上一页
mWebView.goBack(); // goBack()表示返回webView的上一页面
return true;
}
}
return super.onKeyDown(keyCode, event);
}
}

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:fillEnabled="true" >
<scale
android:duration="250"
android:fromXScale="1.5"
android:fromYScale="1.5"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.0"
android:toYScale="1.0" >
</scale>
<alpha
android:duration="250"
android:fromAlpha="0"
android:interpolator="@android:anim/decelerate_interpolator"
android:toAlpha="1.0" />
</set>

View File

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

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:fillEnabled="true" >
<scale
android:duration="250"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.5"
android:toYScale="1.5" >
</scale>
<alpha
android:duration="250"
android:fromAlpha="1.0"
android:interpolator="@android:anim/decelerate_interpolator"
android:toAlpha="0.0" />
</set>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9667ed3482b5eb84fb77231e7c1e5fc2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
<solid android:color="@color/agreementDialogForegroundColor"/>
</shape>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4e070340c769eb74e83cf1fca3f2cf83
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="5dp"/>
<solid android:color="@color/agreementDialogForegroundColorDark"/>
</shape>

View File

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

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/agreementSplitLine"/>
<corners android:radius="5dp"/>
</shape>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 398bed2947fbd224d949bb24a936f90e
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/agreementSplitLineDark"/>
<corners android:radius="5dp"/>
</shape>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 113cf7ccd3b8d4b43b17fe4553773d7b
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/agreementBtnColor"/>
<corners android:radius="5dp"/>
</shape>

View File

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

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/agreementBtnColorDark"/>
<corners android:radius="5dp"/>
</shape>

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3c879f4582a75174396444543da2cbbd
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

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

View File

@@ -0,0 +1,12 @@
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<color android:color="@android:color/transparent" />
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<solid android:color="@color/agreementBtnColor" />
</shape>
</clip>
</item>
</layer-list>

View File

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

View File

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

View File

@@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/agreementDialogBgColor"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="50dp"
android:background="@drawable/agreement_dialog_bg"
android:gravity="center"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingTop="15dp"
android:paddingRight="10dp"
android:paddingBottom="15dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ServiceAgreementAndPrivacyPolicy"
android:textColor="@color/agreementContentAndTitleColor"
android:textSize="12sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/agreementDialogContentBgColor"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/agreement_dialog_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/agreementContentAndTitleColor"
android:textSize="12sp" />
<LinearLayout
android:onClick="checkClick"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/agreement_dialog_agreement_tips_img"
android:layout_marginTop="2dp"
android:layout_width="15dp"
android:layout_height="15dp"
android:src="@drawable/ic_select_n" />
<TextView
android:textStyle="bold"
android:layout_marginStart="5dp"
android:id="@+id/agreement_dialog_agreement_tips"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/agreementContentAndTitleColor"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="1"
android:background="@drawable/agreement_dialog_left_btn_bg"
android:onClick="onLeftBtnClick"
android:text="@string/NotUsedTemporarily"
android:textColor="@color/agreementBtnTextColor"
android:textSize="12sp" />
<View
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="0.5" />
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="1"
android:background="@drawable/agreement_dialog_right_btn_bg"
android:onClick="onRightBtnClick"
android:text="@string/Agree"
android:textColor="@color/agreementBtnTextColor"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0110f5119cff25246af961ab45c7355f
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/agreementDialogBgColor"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_margin="50dp"
android:background="@drawable/agreement_dialog_bg_drak"
android:gravity="center"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingTop="15dp"
android:paddingRight="10dp"
android:paddingBottom="15dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/ServiceAgreementAndPrivacyPolicy"
android:textColor="@color/agreementContentAndTitleColorDark"
android:textSize="12sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/agreementDialogContentBgColorDark"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/agreement_dialog_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/agreementContentAndTitleColorDark"
android:textSize="12sp" />
<LinearLayout
android:onClick="checkClick"
android:layout_marginTop="5dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageView
android:id="@+id/agreement_dialog_agreement_tips_img"
android:layout_marginTop="2dp"
android:layout_width="15dp"
android:layout_height="15dp"
android:src="@drawable/ic_select_n" />
<TextView
android:textStyle="bold"
android:layout_marginStart="5dp"
android:id="@+id/agreement_dialog_agreement_tips"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textColor="@color/agreementContentAndTitleColorDark"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="1"
android:background="@drawable/agreement_dialog_left_btn_bg_drak"
android:onClick="onLeftBtnClick"
android:text="@string/NotUsedTemporarily"
android:textColor="@color/agreementBtnTextColorDark"
android:textSize="12sp" />
<View
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="0.5" />
<Button
style="?android:attr/borderlessButtonStyle"
android:layout_width="0dp"
android:layout_height="35dp"
android:layout_weight="1"
android:background="@drawable/agreement_dialog_right_btn_bg_drak"
android:onClick="onRightBtnClick"
android:text="@string/Agree"
android:textColor="@color/agreementBtnTextColorDark"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
</RelativeLayout>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 69bedcd1f6b1e634d8f347c16ad56c09
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/webViewBgColor"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="49dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:onClick="onCancel"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:text="@string/Cancel"
android:textColor="@color/agreementBtnColor"
android:textSize="17sp" />
<TextView
android:visibility="gone"
android:id="@+id/web_view_title"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:textColor="@color/agreementContentAndTitleColor"
android:textSize="17sp" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="0.5dp"
android:alpha="0.2"
android:background="@color/agreementSplitLine" />
<ProgressBar
android:id="@+id/web_view_progress_bar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="2dp"
android:max="100"
android:progress="0"
android:progressDrawable="@drawable/web_progress_drawable"
android:visibility="gone" />
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"></WebView>
</LinearLayout>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 80939f89013771f48978da94d53d90bd
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--标题和内容颜色-->
<color name="agreementContentAndTitleColor">#1D1D1D</color>
<!--隐私协议弹窗内容背景-->
<color name="agreementDialogContentBgColor">#FFFFFF</color>
<!--所以可以点击的颜色-->
<color name="agreementBtnColor">#F78B28</color>
<color name="agreementClickTextColor">#F78B28</color>
<!--隐私协议内容标题栏分割线颜色-->
<color name="agreementSplitLine">#9f9f9f</color>
<color name="agreementDialogBgColor">#2F2F2F</color>
<!--弹窗前景色-->
<color name="agreementDialogForegroundColor">#ffffffff</color>
<color name="agreementBtnTextColor">#ffffff</color>
<!--隐私协议内容背景-->
<color name="webViewBgColor">#ffffff</color>
<!--drak-->
<!--标题和内容颜色-->
<color name="agreementContentAndTitleColorDark">#E6E6E6</color>
<!--隐私协议弹窗内容背景-->
<color name="agreementDialogContentBgColorDark">#2E2E2E</color>
<!--所以可以点击的颜色-->
<color name="agreementClickTextColorDark">#F78B28</color>
<color name="agreementBtnColorDark">#2E2E2E</color>
<!--隐私协议内容标题栏分割线颜色-->
<color name="agreementSplitLineDark">#504F4F</color>
<color name="agreementDialogBgColorDark">#2F2F2F</color>
<!--弹窗前景色-->
<color name="agreementDialogForegroundColorDark">#494646</color>
<color name="agreementBtnTextColorDark">#DCDCDC</color>
<!--隐私协议内容背景-->
<color name="webViewBgColorDark">#FFFFFF</color>
</resources>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 4cf8b77a456ebd64784999f5c453e656
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,5 @@
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
</resources>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 038bfd2a647a4244f954d63d9c707d29
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,11 @@
<resources>
<string name="ServiceAgreementAndPrivacyPolicy">服务协议和隐私政策</string>
<string name="NotUsedTemporarily">暂不使用</string>
<string name="Agree">同意</string>
<string name="ServiceAgreementTips">《服务协议》</string>
<string name="And"></string>
<string name="PrivacyPolicyTips">《隐私政策》</string>
<string name="ServiceAgreementAndPrivacyPolicyConten02">了解详细信息。如你同意,请点击“同意”开始接受我们的服务。</string>
<string name="Cancel">取消</string>
<string name="PleaseAgreeAgreement">请阅读并勾选服务协议和隐私政策</string>
</resources>

View File

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

View File

@@ -0,0 +1,20 @@
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@android:color/black</item>
<item name="android:windowBackground">@android:color/black</item>
<item name="colorPrimaryDark">@android:color/black</item>
<item name="colorAccent">@android:color/black</item>
</style>
<style name="TransLateTheme" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/black</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsTranslucent">true</item>
</style>
</resources>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 3e2081ec13095fd44bce1475e6c56c22
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

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

View File

@@ -0,0 +1,9 @@
<paths>
<!-- 这个下载路径也不可以修改必须为GDTDOWNLOAD -->
<external-cache-path
name="gdt_sdk_download_path1"
path="com_qq_e_download" />
<cache-path
name="gdt_sdk_download_path2"
path="com_qq_e_download" />
</paths>

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0113966f726be48419ff1bbed44cbd32
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,3 @@
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>

View File

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

8
Assets/3rd/UIEffect.meta Normal file
View File

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

12
Assets/3rd/UIEffect/.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# These are supported funding model platforms
github: mob-sakai # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: mob_sakai # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

View File

@@ -0,0 +1,35 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: mob-sakai
---
NOTE: Your issue may already be reported! Please search on the [issue tracker](../) before creating one.
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Environment (please complete the following information):**
- Version [e.g. 4.0.0]
- Platform: [e.g. Editor(Windows/Mac), Standalone(Windows/Mac), iOS, Android, WebGL]
- Unity version: [e.g. 2018.2.8f1]
- Build options: [e.g. IL2CPP, .Net 4.x, LWRP]
**Additional context**
Add any other context about the problem here.

View File

@@ -0,0 +1,22 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: mob-sakai
---
NOTE: Your issue may already be reported! Please search on the [issue tracker](../) before creating one.
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -0,0 +1,25 @@
---
name: Question
about: Ask a question about this project
title: ''
labels: question
assignees: mob-sakai
---
NOTE: Your issue may already be reported! Please search on the [issue tracker](../) before creating one.
**Describe what help do you need**
A description of the question.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Environment (please complete the following information):**
- Version [e.g. 4.0.0]
- Platform: [e.g. Editor(Windows/Mac), Standalone(Windows/Mac), iOS, Android, WebGL]
- Unity version: [e.g. 2018.2.8f1]
- Build options: [e.g. IL2CPP, .Net 4.x, LWRP]
**Additional context**
Add any other context or screenshots about the question here.

View File

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@@ -0,0 +1,100 @@
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:

View File

@@ -0,0 +1,87 @@
Shader "Hidden/UI/Default (UIDissolve)"
{
Properties
{
[PerRendererData] _MainTex ("Main Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
_StencilComp ("Stencil Comparison", Float) = 8
_Stencil ("Stencil ID", Float) = 0
_StencilOp ("Stencil Operation", Float) = 0
_StencilWriteMask ("Stencil Write Mask", Float) = 255
_StencilReadMask ("Stencil Read Mask", Float) = 255
_ColorMask ("Color Mask", Float) = 15
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
[Header(Dissolve)]
_TransitionTex ("Transition Texture (A)", 2D) = "white" {}
_ParamTex ("Parameter Texture", 2D) = "white" {}
}
SubShader
{
Tags
{
"Queue"="Transparent"
"IgnoreProjector"="True"
"RenderType"="Transparent"
"PreviewType"="Plane"
"CanUseSpriteAtlas"="True"
}
Stencil
{
Ref [_Stencil]
Comp [_StencilComp]
Pass [_StencilOp]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
}
Cull Off
Lighting Off
ZWrite Off
ZTest [unity_GUIZTestMode]
Blend SrcAlpha OneMinusSrcAlpha
ColorMask [_ColorMask]
Pass
{
Name "Default"
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0
#define DISSOLVE 1
#pragma multi_compile __ UNITY_UI_ALPHACLIP
#pragma multi_compile __ ADD SUBTRACT FILL
#include "UnityCG.cginc"
#include "UnityUI.cginc"
#define UI_DISSOLVE 1
#include "UIEffect.cginc"
#include "UIEffectSprite.cginc"
fixed4 frag(v2f IN) : SV_Target
{
half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;
color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
// Dissolve
color = ApplyTransitionEffect(color, IN.eParam);
#ifdef UNITY_UI_ALPHACLIP
clip (color.a - 0.001);
#endif
return color;
}
ENDCG
}
}
}

View File

@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e1b48dc831eb147e9886c049033213bf
ShaderImporter:
externalObjects: {}
defaultTextures:
- _MainTex: {instanceID: 0}
- _TransitionTex: {instanceID: 0}
- _ParamTex: {instanceID: 0}
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,309 @@
#ifndef UI_EFFECT_INCLUDED
#define UI_EFFECT_INCLUDED
sampler2D _TransitionTex;
sampler2D _ParamTex;
#if GRAYSCALE | SEPIA | NEGA | PIXEL | MONO | CUTOFF | HUE
#define UI_TONE
#endif
#if ADD | SUBTRACT | FILL
#define UI_COLOR
#endif
#if FASTBLUR | MEDIUMBLUR | DETAILBLUR
#define UI_BLUR
#endif
// Unpack float to low-precision [0-1] fixed4.
fixed4 UnpackToVec4(float value)
{
const int PACKER_STEP = 64;
const int PRECISION = PACKER_STEP - 1;
fixed4 unpacked;
unpacked.x = (value % PACKER_STEP) / PRECISION;
value = floor(value / PACKER_STEP);
unpacked.y = (value % PACKER_STEP) / PRECISION;
value = floor(value / PACKER_STEP);
unpacked.z = (value % PACKER_STEP) / PRECISION;
value = floor(value / PACKER_STEP);
unpacked.w = (value % PACKER_STEP) / PRECISION;
return unpacked;
}
// Unpack float to low-precision [0-1] fixed3.
fixed3 UnpackToVec3(float value)
{
const int PACKER_STEP = 256;
const int PRECISION = PACKER_STEP - 1;
fixed3 unpacked;
unpacked.x = (value % (PACKER_STEP)) / (PACKER_STEP - 1);
value = floor(value / (PACKER_STEP));
unpacked.y = (value % PACKER_STEP) / (PACKER_STEP - 1);
value = floor(value / PACKER_STEP);
unpacked.z = (value % PACKER_STEP) / (PACKER_STEP - 1);
return unpacked;
}
// Unpack float to low-precision [0-1] half2.
half2 UnpackToVec2(float value)
{
const int PACKER_STEP = 4096;
const int PRECISION = PACKER_STEP - 1;
half2 unpacked;
unpacked.x = (value % (PACKER_STEP)) / (PACKER_STEP - 1);
value = floor(value / (PACKER_STEP));
unpacked.y = (value % PACKER_STEP) / (PACKER_STEP - 1);
return unpacked;
}
// Sample texture with blurring.
// * Fast: Sample texture with 3x3 kernel.
// * Medium: Sample texture with 5x5 kernel.
// * Detail: Sample texture with 7x7 kernel.
fixed4 Tex2DBlurring (sampler2D tex, half2 texcood, half2 blur, half4 mask)
{
#if FASTBLUR && EX
const int KERNEL_SIZE = 5;
const float KERNEL_[5] = { 0.2486, 0.7046, 1.0, 0.7046, 0.2486};
#elif MEDIUMBLUR && EX
const int KERNEL_SIZE = 9;
const float KERNEL_[9] = { 0.0438, 0.1719, 0.4566, 0.8204, 1.0, 0.8204, 0.4566, 0.1719, 0.0438};
#elif DETAILBLUR && EX
const int KERNEL_SIZE = 13;
const float KERNEL_[13] = { 0.0438, 0.1138, 0.2486, 0.4566, 0.7046, 0.9141, 1.0, 0.9141, 0.7046, 0.4566, 0.2486, 0.1138, 0.0438};
#elif FASTBLUR
const int KERNEL_SIZE = 3;
const float KERNEL_[3] = { 0.4566, 1.0, 0.4566};
#elif MEDIUMBLUR
const int KERNEL_SIZE = 5;
const float KERNEL_[5] = { 0.2486, 0.7046, 1.0, 0.7046, 0.2486};
#elif DETAILBLUR
const int KERNEL_SIZE = 7;
const float KERNEL_[7] = { 0.1719, 0.4566, 0.8204, 1.0, 0.8204, 0.4566, 0.1719};
#else
const int KERNEL_SIZE = 1;
const float KERNEL_[1] = { 1.0 };
#endif
float4 o = 0;
float sum = 0;
float2 shift = 0;
for(int x = 0; x < KERNEL_SIZE; x++)
{
shift.x = blur.x * (float(x) - KERNEL_SIZE/2);
for(int y = 0; y < KERNEL_SIZE; y++)
{
shift.y = blur.y * (float(y) - KERNEL_SIZE/2);
float2 uv = texcood + shift;
float weight = KERNEL_[x] * KERNEL_[y];
sum += weight;
#if EX
fixed masked = min(mask.x <= uv.x, uv.x <= mask.z) * min(mask.y <= uv.y, uv.y <= mask.w);
o += lerp(fixed4(0.5, 0.5, 0.5, 0), tex2D(tex, uv), masked) * weight;
#else
o += tex2D(tex, uv) * weight;
#endif
}
}
return o / sum;
}
// Sample texture with blurring.
// * Fast: Sample texture with 3x3 kernel.
// * Medium: Sample texture with 5x5 kernel.
// * Detail: Sample texture with 7x7 kernel.
fixed4 Tex2DBlurring (sampler2D tex, half2 texcood, half2 blur)
{
return Tex2DBlurring(tex, texcood, blur, half4(0,0,1,1));
}
// Sample texture with blurring.
// * Fast: Sample texture with 3x1 kernel.
// * Medium: Sample texture with 5x1 kernel.
// * Detail: Sample texture with 7x1 kernel.
fixed4 Tex2DBlurring1D (sampler2D tex, half2 uv, half2 blur)
{
#if FASTBLUR
const int KERNEL_SIZE = 3;
#elif MEDIUMBLUR
const int KERNEL_SIZE = 5;
#elif DETAILBLUR
const int KERNEL_SIZE = 7;
#else
const int KERNEL_SIZE = 1;
#endif
float4 o = 0;
float sum = 0;
float weight;
half2 texcood;
for(int i = -KERNEL_SIZE/2; i <= KERNEL_SIZE/2; i++)
{
texcood = uv;
texcood.x += blur.x * i;
texcood.y += blur.y * i;
weight = 1.0/(abs(i)+2);
o += tex2D(tex, texcood)*weight;
sum += weight;
}
return o / sum;
}
fixed3 shift_hue(fixed3 RGB, half VSU, half VSW)
{
fixed3 result;
result.x = (0.299 + 0.701*VSU + 0.168*VSW)*RGB.x
+ (0.587 - 0.587*VSU + 0.330*VSW)*RGB.y
+ (0.114 - 0.114*VSU - 0.497*VSW)*RGB.z;
result.y = (0.299 - 0.299*VSU - 0.328*VSW)*RGB.x
+ (0.587 + 0.413*VSU + 0.035*VSW)*RGB.y
+ (0.114 - 0.114*VSU + 0.292*VSW)*RGB.z;
result.z = (0.299 - 0.3*VSU + 1.25*VSW)*RGB.x
+ (0.587 - 0.588*VSU - 1.05*VSW)*RGB.y
+ (0.114 + 0.886*VSU - 0.203*VSW)*RGB.z;
return result;
}
// Apply tone effect.
fixed4 ApplyToneEffect(fixed4 color, fixed factor)
{
#ifdef GRAYSCALE
color.rgb = lerp(color.rgb, Luminance(color.rgb), factor);
#elif SEPIA
color.rgb = lerp(color.rgb, Luminance(color.rgb) * half3(1.07, 0.74, 0.43), factor);
#elif NEGA
color.rgb = lerp(color.rgb, 1 - color.rgb, factor);
#endif
return color;
}
// Apply color effect.
fixed4 ApplyColorEffect(half4 color, half4 factor)
{
#if FILL
color.rgb = lerp(color.rgb, factor.rgb, factor.a);
#elif ADD
color.rgb += factor.rgb * factor.a;
#elif SUBTRACT
color.rgb -= factor.rgb * factor.a;
#else
color.rgb = lerp(color.rgb, color.rgb * factor.rgb, factor.a);
#endif
#if CUTOFF
color.a = factor.a;
#endif
return color;
}
// Apply transition effect.
fixed4 ApplyTransitionEffect(half4 color, half3 transParam)
{
fixed4 param = tex2D(_ParamTex, float2(0.25, transParam.z));
float alpha = tex2D(_TransitionTex, transParam.xy).a;
#if REVERSE
fixed effectFactor = 1 - param.x;
#else
fixed effectFactor = param.x;
#endif
#if FADE
color.a *= saturate(alpha + (1 - effectFactor * 2));
#elif CUTOFF
color.a *= step(0.001, color.a * alpha - effectFactor);
#elif DISSOLVE
fixed width = param.y/4;
fixed softness = param.z;
fixed3 dissolveColor = tex2D(_ParamTex, float2(0.75, transParam.z)).rgb;
float factor = alpha - effectFactor * ( 1 + width ) + width;
fixed edgeLerp = step(factor, color.a) * saturate((width - factor)*16/ softness);
color = ApplyColorEffect(color, fixed4(dissolveColor, edgeLerp));
color.a *= saturate((factor)*32/ softness);
#endif
return color;
}
// Apply shiny effect.
half4 ApplyShinyEffect(half4 color, half2 shinyParam)
{
fixed nomalizedPos = shinyParam.x;
fixed4 param1 = tex2D(_ParamTex, float2(0.25, shinyParam.y));
fixed4 param2 = tex2D(_ParamTex, float2(0.75, shinyParam.y));
half location = param1.x * 2 - 0.5;
fixed width = param1.y;
fixed soft = param1.z;
fixed brightness = param1.w;
fixed gloss = param2.x;
half normalized = 1 - saturate(abs((nomalizedPos - location) / width));
half shinePower = smoothstep(0, soft, normalized);
half3 reflectColor = lerp(fixed3(1,1,1), color.rgb * 7, gloss);
color.rgb += color.a * (shinePower / 2) * brightness * reflectColor;
return color;
}
half3 RgbToHsv(half3 c) {
half4 K = half4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
half4 p = lerp(half4(c.bg, K.wz), half4(c.gb, K.xy), step(c.b, c.g));
half4 q = lerp(half4(p.xyw, c.r), half4(c.r, p.yzx), step(p.x, c.r));
half d = q.x - min(q.w, q.y);
half e = 1.0e-10;
return half3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
}
half3 HsvToRgb(half3 c) {
c = half3(c.x, clamp(c.yz, 0.0, 1.0));
half4 K = half4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
half3 p = abs(frac(c.xxx + K.xyz) * 6.0 - K.www);
return c.z * lerp(K.xxx, clamp(p.xyz - K.xxx, 0.0, 1.0), c.y);
}
// Apply Hsv effect.
half4 ApplyHsvEffect(half4 color, half param)
{
fixed4 param1 = tex2D(_ParamTex, float2(0.25, param));
fixed4 param2 = tex2D(_ParamTex, float2(0.75, param));
fixed3 targetHsv = param1.rgb;
fixed3 targetRange = param1.w;
fixed3 hsvShift = param2.xyz - 0.5;
half3 hsv = RgbToHsv(color.rgb);
half3 range = abs(hsv - targetHsv);
half diff = max(max(min(1-range.x, range.x), min(1-range.y, range.y)/10), min(1-range.z, range.z)/10);
fixed masked = step(diff, targetRange);
color.rgb = HsvToRgb(hsv + hsvShift * masked);
return color;
}
#endif // UI_EFFECT_INCLUDED

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 7467061e9f5514f2c80e30817ee2458b
timeCreated: 1487915863
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,113 @@
Shader "Hidden/UI/Default (UIEffect)"
{
Properties
{
[PerRendererData] _MainTex ("Main Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
_StencilComp ("Stencil Comparison", Float) = 8
_Stencil ("Stencil ID", Float) = 0
_StencilOp ("Stencil Operation", Float) = 0
_StencilWriteMask ("Stencil Write Mask", Float) = 255
_StencilReadMask ("Stencil Read Mask", Float) = 255
_ColorMask ("Color Mask", Float) = 15
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
_ParamTex ("Parameter Texture", 2D) = "white" {}
}
SubShader
{
Tags
{
"Queue"="Transparent"
"IgnoreProjector"="True"
"RenderType"="Transparent"
"PreviewType"="Plane"
"CanUseSpriteAtlas"="True"
}
Stencil
{
Ref [_Stencil]
Comp [_StencilComp]
Pass [_StencilOp]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
}
Cull Off
Lighting Off
ZWrite Off
ZTest [unity_GUIZTestMode]
Blend SrcAlpha OneMinusSrcAlpha
ColorMask [_ColorMask]
Pass
{
Name "Default"
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#if !defined(SHADER_API_D3D11_9X) && !defined(SHADER_API_D3D9)
#pragma target 2.0
#else
#pragma target 3.0
#endif
#pragma multi_compile __ UNITY_UI_ALPHACLIP
#pragma multi_compile __ GRAYSCALE SEPIA NEGA PIXEL
#pragma multi_compile __ ADD SUBTRACT FILL
#pragma multi_compile __ FASTBLUR MEDIUMBLUR DETAILBLUR
#pragma multi_compile __ EX
#include "UnityCG.cginc"
#include "UnityUI.cginc"
#define UI_EFFECT 1
#include "UIEffect.cginc"
#include "UIEffectSprite.cginc"
fixed4 frag(v2f IN) : SV_Target
{
fixed4 param = tex2D(_ParamTex, float2(0.25, IN.eParam));
fixed effectFactor = param.x;
fixed colorFactor = param.y;
fixed blurFactor = param.z;
#if PIXEL
half2 pixelSize = max(2, (1-effectFactor*0.95) * _MainTex_TexelSize.zw);
IN.texcoord = round(IN.texcoord * pixelSize) / pixelSize;
#endif
#if defined(UI_BLUR) && EX
half4 color = (Tex2DBlurring(_MainTex, IN.texcoord, blurFactor * _MainTex_TexelSize.xy * 2, IN.uvMask) + _TextureSampleAdd);
#elif defined(UI_BLUR)
half4 color = (Tex2DBlurring(_MainTex, IN.texcoord, blurFactor * _MainTex_TexelSize.xy * 2) + _TextureSampleAdd);
#else
half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd);
#endif
color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
#if UNITY_UI_ALPHACLIP
clip (color.a - 0.001);
#endif
#if defined (UI_TONE)
color = ApplyToneEffect(color, effectFactor);
#endif
color = ApplyColorEffect(color, fixed4(IN.color.rgb, colorFactor));
color.a *= IN.color.a;
return color;
}
ENDCG
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: b868e81d0156245e08c8646b4fb68d7a
timeCreated: 1482973535
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,75 @@
#ifndef UI_EFFECT_SPRITE_INCLUDED
#define UI_EFFECT_SPRITE_INCLUDED
fixed4 _Color;
fixed4 _TextureSampleAdd;
float4 _ClipRect;
sampler2D _MainTex;
float4 _MainTex_TexelSize;
struct appdata_t
{
float4 vertex : POSITION;
float4 color : COLOR;
float2 texcoord : TEXCOORD0;
#if EX
float2 uvMask : TEXCOORD1;
#endif
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct v2f
{
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
half2 texcoord : TEXCOORD0;
float4 worldPosition : TEXCOORD1;
#if UI_DISSOLVE || UI_TRANSITION
half3 eParam : TEXCOORD2;
#elif UI_SHINY
half2 eParam : TEXCOORD2;
#else
half eParam : TEXCOORD2;
#endif
#if EX
half4 uvMask : TEXCOORD3;
#endif
UNITY_VERTEX_OUTPUT_STEREO
};
v2f vert(appdata_t IN)
{
v2f OUT;
UNITY_SETUP_INSTANCE_ID(IN);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
OUT.worldPosition = IN.vertex;
OUT.vertex = UnityObjectToClipPos(OUT.worldPosition);
#if UI_EFFECT
OUT.texcoord = UnpackToVec2(IN.texcoord.x) * 2 - 0.5;
#else
OUT.texcoord = UnpackToVec2(IN.texcoord.x);
#endif
#ifdef UNITY_HALF_TEXEL_OFFSET
OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1);
#endif
OUT.color = IN.color * _Color;
#if UI_DISSOLVE || UI_TRANSITION
OUT.eParam = UnpackToVec3(IN.texcoord.y);
#elif UI_SHINY
OUT.eParam = UnpackToVec2(IN.texcoord.y);
#else
OUT.eParam = IN.texcoord.y;
#endif
#if EX
OUT.uvMask = half4(UnpackToVec2(IN.uvMask.x), UnpackToVec2(IN.uvMask.y));
#endif
return OUT;
}
#endif // UI_EFFECT_SPRITE_INCLUDED

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: dd60a36b172cf49e2b82258a68799ce3
timeCreated: 1487915863
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,79 @@
Shader "Hidden/UI/Default (UIHsvModifier)"
{
Properties
{
[PerRendererData] _MainTex ("Main Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
_StencilComp ("Stencil Comparison", Float) = 8
_Stencil ("Stencil ID", Float) = 0
_StencilOp ("Stencil Operation", Float) = 0
_StencilWriteMask ("Stencil Write Mask", Float) = 255
_StencilReadMask ("Stencil Read Mask", Float) = 255
_ColorMask ("Color Mask", Float) = 15
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
_ParamTex ("Parameter Texture", 2D) = "white" {}
}
SubShader
{
Tags
{
"Queue"="Transparent"
"IgnoreProjector"="True"
"RenderType"="Transparent"
"PreviewType"="Plane"
"CanUseSpriteAtlas"="True"
}
Stencil
{
Ref [_Stencil]
Comp [_StencilComp]
Pass [_StencilOp]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
}
Cull Off
Lighting Off
ZWrite Off
ZTest [unity_GUIZTestMode]
Blend SrcAlpha OneMinusSrcAlpha
ColorMask [_ColorMask]
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma multi_compile __ UNITY_UI_ALPHACLIP
#include "UnityCG.cginc"
#include "UnityUI.cginc"
#define UI_HSV_MODIFIER 1
#include "UIEffect.cginc"
#include "UIEffectSprite.cginc"
fixed4 frag(v2f IN) : COLOR
{
half4 color = tex2D(_MainTex, IN.texcoord);// + _TextureSampleAdd) * IN.color;
color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
#ifdef UNITY_UI_ALPHACLIP
clip (color.a - 0.001);
#endif
color = ApplyHsvEffect(color, IN.eParam);
return (color + _TextureSampleAdd) * IN.color;
}
ENDCG
}
}
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 7fc74090480c84f8b977cfcd55cdfe82
timeCreated: 1531882595
licenseType: Pro
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,82 @@
Shader "Hidden/UI/Default (UIShiny)"
{
Properties
{
[PerRendererData] _MainTex ("Main Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
_StencilComp ("Stencil Comparison", Float) = 8
_Stencil ("Stencil ID", Float) = 0
_StencilOp ("Stencil Operation", Float) = 0
_StencilWriteMask ("Stencil Write Mask", Float) = 255
_StencilReadMask ("Stencil Read Mask", Float) = 255
_ColorMask ("Color Mask", Float) = 15
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
_ParamTex ("Parameter Texture", 2D) = "white" {}
}
SubShader
{
Tags
{
"Queue"="Transparent"
"IgnoreProjector"="True"
"RenderType"="Transparent"
"PreviewType"="Plane"
"CanUseSpriteAtlas"="True"
}
Stencil
{
Ref [_Stencil]
Comp [_StencilComp]
Pass [_StencilOp]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
}
Cull Off
Lighting Off
ZWrite Off
ZTest [unity_GUIZTestMode]
Blend SrcAlpha OneMinusSrcAlpha
ColorMask [_ColorMask]
Pass
{
Name "Default"
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#pragma target 2.0
#pragma multi_compile __ UNITY_UI_ALPHACLIP
#include "UnityCG.cginc"
#include "UnityUI.cginc"
#define UI_SHINY 1
#include "UIEffect.cginc"
#include "UIEffectSprite.cginc"
fixed4 frag(v2f IN) : SV_Target
{
half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color;
color.a *= UnityGet2DClipping(IN.worldPosition.xy, _ClipRect);
color = ApplyShinyEffect(color, IN.eParam);
#ifdef UNITY_UI_ALPHACLIP
clip (color.a - 0.001);
#endif
return color;
}
ENDCG
}
}
}

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