Compare commits
No commits in common. "33356da2c43fa28397192baee70910c978e3169f" and "1b5588f41819df522031902a78fdd941abf3d903" have entirely different histories.
33356da2c4
...
1b5588f418
|
|
@ -13,9 +13,9 @@ jobs:
|
||||||
release:
|
release:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- uses: cycjimmy/semantic-release-action@v3
|
- uses: cycjimmy/semantic-release-action@v2
|
||||||
with:
|
with:
|
||||||
extra_plugins: |
|
extra_plugins: |
|
||||||
@semantic-release/changelog
|
@semantic-release/changelog
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ jobs:
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
# Checkout sandbox project
|
# Checkout sandbox project
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
ref: sandbox
|
ref: sandbox
|
||||||
submodules: true
|
submodules: true
|
||||||
|
|
@ -43,7 +43,7 @@ jobs:
|
||||||
working-directory: Packages/dev
|
working-directory: Packages/dev
|
||||||
run: git checkout ${{ github.sha }}
|
run: git checkout ${{ github.sha }}
|
||||||
|
|
||||||
- uses: actions/cache@v3
|
- uses: actions/cache@v2
|
||||||
with:
|
with:
|
||||||
path: Library
|
path: Library
|
||||||
key: Library-${{ matrix.unityVersion }}-${{ github.sha }}
|
key: Library-${{ matrix.unityVersion }}-${{ github.sha }}
|
||||||
|
|
@ -59,7 +59,7 @@ jobs:
|
||||||
|
|
||||||
# Run tests
|
# Run tests
|
||||||
- name: "Run tests"
|
- name: "Run tests"
|
||||||
uses: game-ci/unity-test-runner@v3
|
uses: game-ci/unity-test-runner@main
|
||||||
with:
|
with:
|
||||||
unityVersion: ${{ matrix.unityVersion }}
|
unityVersion: ${{ matrix.unityVersion }}
|
||||||
customParameters: -nographics
|
customParameters: -nographics
|
||||||
|
|
|
||||||
21
CHANGELOG.md
21
CHANGELOG.md
|
|
@ -1,24 +1,3 @@
|
||||||
## [1.4.2](https://github.com/mob-sakai/UnmaskForUGUI/compare/1.4.1...1.4.2) (2023-10-25)
|
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* UnmaskRaycastFilter not working anymore ([14ab505](https://github.com/mob-sakai/UnmaskForUGUI/commit/14ab505fbfaf1103bbb1869d0e42817bf8830ced)), closes [#29](https://github.com/mob-sakai/UnmaskForUGUI/issues/29)
|
|
||||||
|
|
||||||
## [1.4.1](https://github.com/mob-sakai/UnmaskForUGUI/compare/1.4.0...1.4.1) (2023-03-14)
|
|
||||||
|
|
||||||
|
|
||||||
### Bug Fixes
|
|
||||||
|
|
||||||
* Fixed error when executing menu item ([9f0afa1](https://github.com/mob-sakai/UnmaskForUGUI/commit/9f0afa19a46bc7b718a80142b02e33ade67fa3b4)), closes [#27](https://github.com/mob-sakai/UnmaskForUGUI/issues/27)
|
|
||||||
|
|
||||||
# [1.4.0](https://github.com/mob-sakai/UnmaskForUGUI/compare/1.3.0...1.4.0) (2022-02-17)
|
|
||||||
|
|
||||||
|
|
||||||
### Features
|
|
||||||
|
|
||||||
* add edge smoothing option ([c5317de](https://github.com/mob-sakai/UnmaskForUGUI/commit/c5317deafeba575161db8b168dae845d68347236))
|
|
||||||
|
|
||||||
# [1.3.0](https://github.com/mob-sakai/UnmaskForUGUI/compare/1.2.0...1.3.0) (2021-06-29)
|
# [1.3.0](https://github.com/mob-sakai/UnmaskForUGUI/compare/1.2.0...1.3.0) (2021-06-29)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,41 +1,35 @@
|
||||||
using UnityEngine;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
namespace Coffee.UIExtensions.Demos
|
namespace Coffee.UIExtensions.Demos
|
||||||
{
|
{
|
||||||
public class Unmask_Demo : MonoBehaviour
|
public class Unmask_Demo : MonoBehaviour
|
||||||
{
|
{
|
||||||
[SerializeField] Unmask unmask = null;
|
[SerializeField] Button target;
|
||||||
[SerializeField] Unmask[] smoothingUnmasks = new Unmask[0];
|
[SerializeField] Unmask unmask;
|
||||||
[SerializeField] Graphic transition = null;
|
[SerializeField] Graphic transition;
|
||||||
[SerializeField] Image transitionImage = null;
|
[SerializeField] Image transitionImage;
|
||||||
[SerializeField] Sprite unity_chan = null;
|
[SerializeField] Sprite unity_chan;
|
||||||
[SerializeField] Sprite unity_frame = null;
|
[SerializeField] Sprite unity_frame;
|
||||||
|
|
||||||
public void AutoFitToButton(bool flag)
|
public void AutoFitToButton(bool flag)
|
||||||
{
|
{
|
||||||
unmask.fitOnLateUpdate = flag;
|
unmask.fitOnLateUpdate = flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetTransitionColor(bool flag)
|
public void SetTransitionColor(bool flag)
|
||||||
{
|
{
|
||||||
transition.color = flag ? Color.white : Color.black;
|
transition.color = flag ? Color.white : Color.black;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetTransitionImage(bool flag)
|
public void SetTransitionImage(bool flag)
|
||||||
{
|
{
|
||||||
transitionImage.sprite = flag ? unity_chan : unity_frame;
|
transitionImage.sprite = flag ? unity_chan : unity_frame;
|
||||||
transitionImage.SetNativeSize();
|
transitionImage.SetNativeSize();
|
||||||
var size = transitionImage.rectTransform.rect.size;
|
var size = transitionImage.rectTransform.rect.size;
|
||||||
transitionImage.rectTransform.sizeDelta = new Vector2(150, size.y / size.x * 150);
|
transitionImage.rectTransform.sizeDelta = new Vector2(150, size.y / size.x * 150);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
public void EnableSmoothing(bool flag)
|
|
||||||
{
|
|
||||||
foreach (var unmask in smoothingUnmasks)
|
|
||||||
{
|
|
||||||
unmask.edgeSmoothing = flag ? 1 : 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
@ -38,7 +38,7 @@ RenderSettings:
|
||||||
m_ReflectionIntensity: 1
|
m_ReflectionIntensity: 1
|
||||||
m_CustomReflection: {fileID: 0}
|
m_CustomReflection: {fileID: 0}
|
||||||
m_Sun: {fileID: 0}
|
m_Sun: {fileID: 0}
|
||||||
m_IndirectSpecularColor: {r: 0.44657838, g: 0.49641234, b: 0.57481676, a: 1}
|
m_IndirectSpecularColor: {r: 0.44657874, g: 0.49641275, b: 0.5748172, a: 1}
|
||||||
m_UseRadianceAmbientProbe: 0
|
m_UseRadianceAmbientProbe: 0
|
||||||
--- !u!157 &3
|
--- !u!157 &3
|
||||||
LightmapSettings:
|
LightmapSettings:
|
||||||
|
|
@ -526,12 +526,8 @@ MonoBehaviour:
|
||||||
m_Script: {fileID: 11500000, guid: ab46b16b64e214e0d91583c53ac12da4, type: 3}
|
m_Script: {fileID: 11500000, guid: ab46b16b64e214e0d91583c53ac12da4, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
|
target: {fileID: 2026878701}
|
||||||
unmask: {fileID: 1934621013}
|
unmask: {fileID: 1934621013}
|
||||||
smoothingUnmasks:
|
|
||||||
- {fileID: 474546652}
|
|
||||||
- {fileID: 323196830}
|
|
||||||
- {fileID: 1934621013}
|
|
||||||
- {fileID: 427535254}
|
|
||||||
transition: {fileID: 1826727338}
|
transition: {fileID: 1826727338}
|
||||||
transitionImage: {fileID: 653262226}
|
transitionImage: {fileID: 653262226}
|
||||||
unity_chan: {fileID: 21300000, guid: 0cd154e72107340939b1731297ff8632, type: 3}
|
unity_chan: {fileID: 21300000, guid: 0cd154e72107340939b1731297ff8632, type: 3}
|
||||||
|
|
@ -615,101 +611,6 @@ CanvasRenderer:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 158225045}
|
m_GameObject: {fileID: 158225045}
|
||||||
m_CullTransparentMesh: 0
|
m_CullTransparentMesh: 0
|
||||||
--- !u!1 &183422925
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 183422926}
|
|
||||||
- component: {fileID: 183422927}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Toggle - Edge Smoothing
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &183422926
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 183422925}
|
|
||||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_Children:
|
|
||||||
- {fileID: 797299950}
|
|
||||||
- {fileID: 758245432}
|
|
||||||
m_Father: {fileID: 1526965849}
|
|
||||||
m_RootOrder: 4
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
|
||||||
m_AnchoredPosition: {x: 92.421875, y: -99}
|
|
||||||
m_SizeDelta: {x: 184.84375, y: 22}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!114 &183422927
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 183422925}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Navigation:
|
|
||||||
m_Mode: 3
|
|
||||||
m_SelectOnUp: {fileID: 0}
|
|
||||||
m_SelectOnDown: {fileID: 0}
|
|
||||||
m_SelectOnLeft: {fileID: 0}
|
|
||||||
m_SelectOnRight: {fileID: 0}
|
|
||||||
m_Transition: 1
|
|
||||||
m_Colors:
|
|
||||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
|
||||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
|
||||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
|
||||||
m_ColorMultiplier: 1
|
|
||||||
m_FadeDuration: 0.1
|
|
||||||
m_SpriteState:
|
|
||||||
m_HighlightedSprite: {fileID: 0}
|
|
||||||
m_PressedSprite: {fileID: 0}
|
|
||||||
m_DisabledSprite: {fileID: 0}
|
|
||||||
m_AnimationTriggers:
|
|
||||||
m_NormalTrigger: Normal
|
|
||||||
m_HighlightedTrigger: Highlighted
|
|
||||||
m_PressedTrigger: Pressed
|
|
||||||
m_DisabledTrigger: Disabled
|
|
||||||
m_Interactable: 1
|
|
||||||
m_TargetGraphic: {fileID: 797299951}
|
|
||||||
toggleTransition: 1
|
|
||||||
graphic: {fileID: 1335416432}
|
|
||||||
m_Group: {fileID: 0}
|
|
||||||
onValueChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls:
|
|
||||||
- m_Target: {fileID: 133894763}
|
|
||||||
m_MethodName: EnableSmoothing
|
|
||||||
m_Mode: 0
|
|
||||||
m_Arguments:
|
|
||||||
m_ObjectArgument: {fileID: 0}
|
|
||||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
|
||||||
m_IntArgument: 0
|
|
||||||
m_FloatArgument: 0
|
|
||||||
m_StringArgument:
|
|
||||||
m_BoolArgument: 0
|
|
||||||
m_CallState: 1
|
|
||||||
m_TypeName: UnityEngine.UI.Toggle+ToggleEvent, UnityEngine.UI, Version=1.0.0.0,
|
|
||||||
Culture=neutral, PublicKeyToken=null
|
|
||||||
m_IsOn: 1
|
|
||||||
--- !u!1 &209121757
|
--- !u!1 &209121757
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -838,7 +739,6 @@ MonoBehaviour:
|
||||||
m_FitOnLateUpdate: 0
|
m_FitOnLateUpdate: 0
|
||||||
m_OnlyForChildren: 0
|
m_OnlyForChildren: 0
|
||||||
m_ShowUnmaskGraphic: 0
|
m_ShowUnmaskGraphic: 0
|
||||||
m_EdgeSmoothing: 1
|
|
||||||
--- !u!114 &323196831
|
--- !u!114 &323196831
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -1184,7 +1084,6 @@ MonoBehaviour:
|
||||||
m_FitOnLateUpdate: 0
|
m_FitOnLateUpdate: 0
|
||||||
m_OnlyForChildren: 0
|
m_OnlyForChildren: 0
|
||||||
m_ShowUnmaskGraphic: 0
|
m_ShowUnmaskGraphic: 0
|
||||||
m_EdgeSmoothing: 1
|
|
||||||
--- !u!114 &427535255
|
--- !u!114 &427535255
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -1266,8 +1165,8 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 97.378136, y: -33}
|
m_AnchoredPosition: {x: 99.331215, y: -33}
|
||||||
m_SizeDelta: {x: 194.75627, y: 22}
|
m_SizeDelta: {x: 198.66243, y: 22}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &432299462
|
--- !u!114 &432299462
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
|
|
@ -1525,7 +1424,6 @@ MonoBehaviour:
|
||||||
m_FitOnLateUpdate: 0
|
m_FitOnLateUpdate: 0
|
||||||
m_OnlyForChildren: 0
|
m_OnlyForChildren: 0
|
||||||
m_ShowUnmaskGraphic: 1
|
m_ShowUnmaskGraphic: 1
|
||||||
m_EdgeSmoothing: 1
|
|
||||||
--- !u!114 &474546653
|
--- !u!114 &474546653
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -1899,7 +1797,6 @@ MonoBehaviour:
|
||||||
m_FitOnLateUpdate: 0
|
m_FitOnLateUpdate: 0
|
||||||
m_OnlyForChildren: 0
|
m_OnlyForChildren: 0
|
||||||
m_ShowUnmaskGraphic: 0
|
m_ShowUnmaskGraphic: 0
|
||||||
m_EdgeSmoothing: 0
|
|
||||||
--- !u!114 &653262226
|
--- !u!114 &653262226
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -2016,160 +1913,6 @@ CanvasRenderer:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 749509811}
|
m_GameObject: {fileID: 749509811}
|
||||||
m_CullTransparentMesh: 0
|
m_CullTransparentMesh: 0
|
||||||
--- !u!1 &758245431
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 758245432}
|
|
||||||
- component: {fileID: 758245434}
|
|
||||||
- component: {fileID: 758245433}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Label
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &758245432
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 758245431}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 183422926}
|
|
||||||
m_RootOrder: 1
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0, y: 0}
|
|
||||||
m_AnchorMax: {x: 1, y: 1}
|
|
||||||
m_AnchoredPosition: {x: 11.5, y: 0.0000076293945}
|
|
||||||
m_SizeDelta: {x: -23, y: 0}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!114 &758245433
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 758245431}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 0
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
|
||||||
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
|
||||||
m_FontData:
|
|
||||||
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
|
|
||||||
m_FontSize: 14
|
|
||||||
m_FontStyle: 0
|
|
||||||
m_BestFit: 0
|
|
||||||
m_MinSize: 1
|
|
||||||
m_MaxSize: 40
|
|
||||||
m_Alignment: 3
|
|
||||||
m_AlignByGeometry: 0
|
|
||||||
m_RichText: 0
|
|
||||||
m_HorizontalOverflow: 0
|
|
||||||
m_VerticalOverflow: 0
|
|
||||||
m_LineSpacing: 1
|
|
||||||
m_Text: Edge smoothing
|
|
||||||
--- !u!222 &758245434
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 758245431}
|
|
||||||
m_CullTransparentMesh: 0
|
|
||||||
--- !u!1 &797299949
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 797299950}
|
|
||||||
- component: {fileID: 797299952}
|
|
||||||
- component: {fileID: 797299951}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Background
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &797299950
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 797299949}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_Children:
|
|
||||||
- {fileID: 1335416431}
|
|
||||||
m_Father: {fileID: 183422926}
|
|
||||||
m_RootOrder: 0
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0, y: 0.5}
|
|
||||||
m_AnchorMax: {x: 0, y: 0.5}
|
|
||||||
m_AnchoredPosition: {x: 10, y: 0}
|
|
||||||
m_SizeDelta: {x: 20, y: 20}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!114 &797299951
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 797299949}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
|
||||||
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
|
||||||
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
|
||||||
m_Type: 1
|
|
||||||
m_PreserveAspect: 0
|
|
||||||
m_FillCenter: 1
|
|
||||||
m_FillMethod: 4
|
|
||||||
m_FillAmount: 1
|
|
||||||
m_FillClockwise: 1
|
|
||||||
m_FillOrigin: 0
|
|
||||||
m_UseSpriteMesh: 0
|
|
||||||
--- !u!222 &797299952
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 797299949}
|
|
||||||
m_CullTransparentMesh: 0
|
|
||||||
--- !u!1 &798697676
|
--- !u!1 &798697676
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -3306,8 +3049,8 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 92.421875, y: -11}
|
m_AnchoredPosition: {x: 90.46879, y: -11}
|
||||||
m_SizeDelta: {x: 184.84375, y: 22}
|
m_SizeDelta: {x: 180.93758, y: 22}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1158411646
|
--- !u!114 &1158411646
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
|
|
@ -3386,8 +3129,8 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 92.421875, y: -77}
|
m_AnchoredPosition: {x: 90.46879, y: -77}
|
||||||
m_SizeDelta: {x: 184.84375, y: 22}
|
m_SizeDelta: {x: 180.93758, y: 22}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1253616863
|
--- !u!114 &1253616863
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
|
|
@ -3575,80 +3318,6 @@ CanvasRenderer:
|
||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1275261700}
|
m_GameObject: {fileID: 1275261700}
|
||||||
m_CullTransparentMesh: 0
|
m_CullTransparentMesh: 0
|
||||||
--- !u!1 &1335416430
|
|
||||||
GameObject:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
serializedVersion: 6
|
|
||||||
m_Component:
|
|
||||||
- component: {fileID: 1335416431}
|
|
||||||
- component: {fileID: 1335416433}
|
|
||||||
- component: {fileID: 1335416432}
|
|
||||||
m_Layer: 5
|
|
||||||
m_Name: Checkmark
|
|
||||||
m_TagString: Untagged
|
|
||||||
m_Icon: {fileID: 0}
|
|
||||||
m_NavMeshLayer: 0
|
|
||||||
m_StaticEditorFlags: 0
|
|
||||||
m_IsActive: 1
|
|
||||||
--- !u!224 &1335416431
|
|
||||||
RectTransform:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1335416430}
|
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
|
||||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
|
||||||
m_Children: []
|
|
||||||
m_Father: {fileID: 797299950}
|
|
||||||
m_RootOrder: 0
|
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
|
||||||
m_AnchoredPosition: {x: 0, y: 0}
|
|
||||||
m_SizeDelta: {x: 20, y: 20}
|
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
|
||||||
--- !u!114 &1335416432
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1335416430}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3}
|
|
||||||
m_Name:
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
m_Material: {fileID: 0}
|
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
|
||||||
m_RaycastTarget: 1
|
|
||||||
m_OnCullStateChanged:
|
|
||||||
m_PersistentCalls:
|
|
||||||
m_Calls: []
|
|
||||||
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
|
|
||||||
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
|
|
||||||
m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0}
|
|
||||||
m_Type: 0
|
|
||||||
m_PreserveAspect: 0
|
|
||||||
m_FillCenter: 1
|
|
||||||
m_FillMethod: 4
|
|
||||||
m_FillAmount: 1
|
|
||||||
m_FillClockwise: 1
|
|
||||||
m_FillOrigin: 0
|
|
||||||
m_UseSpriteMesh: 0
|
|
||||||
--- !u!222 &1335416433
|
|
||||||
CanvasRenderer:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 1335416430}
|
|
||||||
m_CullTransparentMesh: 0
|
|
||||||
--- !u!1 &1341563783
|
--- !u!1 &1341563783
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -3886,8 +3555,8 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 97.378136, y: -11}
|
m_AnchoredPosition: {x: 99.331215, y: -11}
|
||||||
m_SizeDelta: {x: 194.75627, y: 22}
|
m_SizeDelta: {x: 198.66243, y: 22}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1415840031
|
--- !u!114 &1415840031
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
|
|
@ -4037,14 +3706,13 @@ RectTransform:
|
||||||
- {fileID: 1742342034}
|
- {fileID: 1742342034}
|
||||||
- {fileID: 1787531622}
|
- {fileID: 1787531622}
|
||||||
- {fileID: 1253616862}
|
- {fileID: 1253616862}
|
||||||
- {fileID: 183422926}
|
|
||||||
m_Father: {fileID: 798697677}
|
m_Father: {fileID: 798697677}
|
||||||
m_RootOrder: 1
|
m_RootOrder: 1
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 287.17816, y: -55}
|
m_AnchoredPosition: {x: 289.13123, y: -50}
|
||||||
m_SizeDelta: {x: 184.84375, y: 110}
|
m_SizeDelta: {x: 180.93758, y: 100}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1526965850
|
--- !u!114 &1526965850
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
|
|
@ -4411,8 +4079,8 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 92.421875, y: -33}
|
m_AnchoredPosition: {x: 90.46879, y: -33}
|
||||||
m_SizeDelta: {x: 184.84375, y: 22}
|
m_SizeDelta: {x: 180.93758, y: 22}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1742342035
|
--- !u!114 &1742342035
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
|
|
@ -4581,8 +4249,8 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 92.421875, y: -55}
|
m_AnchoredPosition: {x: 90.46879, y: -55}
|
||||||
m_SizeDelta: {x: 184.84375, y: 22}
|
m_SizeDelta: {x: 180.93758, y: 22}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1787531623
|
--- !u!114 &1787531623
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
|
|
@ -4746,8 +4414,8 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 97.378136, y: -50}
|
m_AnchoredPosition: {x: 99.331215, y: -50}
|
||||||
m_SizeDelta: {x: 194.75627, y: 100}
|
m_SizeDelta: {x: 198.66243, y: 100}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1815324079
|
--- !u!114 &1815324079
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
|
|
@ -5075,7 +4743,6 @@ MonoBehaviour:
|
||||||
m_FitOnLateUpdate: 1
|
m_FitOnLateUpdate: 1
|
||||||
m_OnlyForChildren: 0
|
m_OnlyForChildren: 0
|
||||||
m_ShowUnmaskGraphic: 0
|
m_ShowUnmaskGraphic: 0
|
||||||
m_EdgeSmoothing: 1
|
|
||||||
--- !u!114 &1934621014
|
--- !u!114 &1934621014
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|
@ -5129,7 +4796,7 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||||
m_AnchoredPosition: {x: -150.60013, y: -125.75426}
|
m_AnchoredPosition: {x: -150.6, y: -142.8312}
|
||||||
m_SizeDelta: {x: 83.7, y: 30}
|
m_SizeDelta: {x: 83.7, y: 30}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!1 &1971058987
|
--- !u!1 &1971058987
|
||||||
|
|
@ -5500,8 +5167,8 @@ RectTransform:
|
||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 97.378136, y: -55}
|
m_AnchoredPosition: {x: 99.331215, y: -55}
|
||||||
m_SizeDelta: {x: 194.75627, y: 22}
|
m_SizeDelta: {x: 198.66243, y: 22}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &2122063194
|
--- !u!114 &2122063194
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,7 @@ namespace Coffee.UIExtensions.Editors
|
||||||
[MenuItem("GameObject/UI/Unmask/Tutorial Button")]
|
[MenuItem("GameObject/UI/Unmask/Tutorial Button")]
|
||||||
private static void CreateTutorialButton2(MenuCommand menuCommand)
|
private static void CreateTutorialButton2(MenuCommand menuCommand)
|
||||||
{
|
{
|
||||||
#if UNITY_2021_2_OR_NEWER
|
EditorApplication.ExecuteMenuItem("GameObject/UI/Button");
|
||||||
const string menuItemName = "GameObject/UI/Legacy/Button";
|
|
||||||
#else
|
|
||||||
const string menuItemName = "GameObject/UI/Button";
|
|
||||||
#endif
|
|
||||||
EditorApplication.ExecuteMenuItem(menuItemName);
|
|
||||||
var button = Selection.activeGameObject.GetComponent<Button>();
|
var button = Selection.activeGameObject.GetComponent<Button>();
|
||||||
button.name = "Tutorial Button";
|
button.name = "Tutorial Button";
|
||||||
|
|
||||||
|
|
@ -23,6 +18,9 @@ namespace Coffee.UIExtensions.Editors
|
||||||
unmask.fitTarget = button.transform as RectTransform;
|
unmask.fitTarget = button.transform as RectTransform;
|
||||||
unmask.fitOnLateUpdate = true;
|
unmask.fitOnLateUpdate = true;
|
||||||
|
|
||||||
|
var screen = unmaskedPanel.transform.Find("Screen").GetComponent<Image>();
|
||||||
|
screen.gameObject.AddComponent<UnmaskRaycastFilter>().targetUnmask = unmask;
|
||||||
|
|
||||||
Selection.activeGameObject = button.gameObject;
|
Selection.activeGameObject = button.gameObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -34,12 +32,6 @@ namespace Coffee.UIExtensions.Editors
|
||||||
Selection.activeGameObject = unmaskedPanel;
|
Selection.activeGameObject = unmaskedPanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
[MenuItem("GameObject/UI/Unmask/Unmasked Panel")]
|
|
||||||
private static GameObject CreateUnmaskedPanel(MenuCommand menuCommand)
|
|
||||||
{
|
|
||||||
return CreateUnmaskedPanel(AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UISprite.psd"), Image.Type.Sliced);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static GameObject CreateUnmaskedPanel(Sprite unmaskSprite, Image.Type spriteType)
|
private static GameObject CreateUnmaskedPanel(Sprite unmaskSprite, Image.Type spriteType)
|
||||||
{
|
{
|
||||||
EditorApplication.ExecuteMenuItem("GameObject/UI/Panel");
|
EditorApplication.ExecuteMenuItem("GameObject/UI/Panel");
|
||||||
|
|
@ -54,8 +46,6 @@ namespace Coffee.UIExtensions.Editors
|
||||||
unmask.transform.SetParent(mask.transform);
|
unmask.transform.SetParent(mask.transform);
|
||||||
unmask.GetComponent<Image>().sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UISprite.psd");
|
unmask.GetComponent<Image>().sprite = AssetDatabase.GetBuiltinExtraResource<Sprite>("UI/Skin/UISprite.psd");
|
||||||
|
|
||||||
mask.gameObject.AddComponent<UnmaskRaycastFilter>().targetUnmask = unmask;
|
|
||||||
|
|
||||||
var image = unmask.GetComponent<Image>();
|
var image = unmask.GetComponent<Image>();
|
||||||
image.sprite = unmaskSprite;
|
image.sprite = unmaskSprite;
|
||||||
image.type = spriteType;
|
image.type = spriteType;
|
||||||
|
|
|
||||||
|
|
@ -1,265 +1,221 @@
|
||||||
using UnityEngine;
|
using System.Collections;
|
||||||
using UnityEngine.Profiling;
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
using UnityEngine.Rendering;
|
using UnityEngine.Rendering;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
|
||||||
namespace Coffee.UIExtensions
|
namespace Coffee.UIExtensions
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Reverse masking for parent Mask component.
|
/// Reverse masking for parent Mask component.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ExecuteInEditMode]
|
[ExecuteInEditMode]
|
||||||
[AddComponentMenu("UI/Unmask/Unmask", 1)]
|
[AddComponentMenu("UI/Unmask/Unmask", 1)]
|
||||||
public class Unmask : MonoBehaviour, IMaterialModifier
|
public class Unmask : MonoBehaviour, IMaterialModifier
|
||||||
{
|
{
|
||||||
//################################
|
//################################
|
||||||
// Constant or Static Members.
|
// Constant or Static Members.
|
||||||
//################################
|
//################################
|
||||||
private static readonly Vector2 s_Center = new Vector2(0.5f, 0.5f);
|
static readonly Vector2 s_Center = new Vector2(0.5f, 0.5f);
|
||||||
|
|
||||||
|
|
||||||
//################################
|
//################################
|
||||||
// Serialize Members.
|
// Serialize Members.
|
||||||
//################################
|
//################################
|
||||||
[Tooltip("Fit graphic's transform to target transform.")]
|
[Tooltip("Fit graphic's transform to target transform.")]
|
||||||
[SerializeField] private RectTransform m_FitTarget;
|
[SerializeField] RectTransform m_FitTarget;
|
||||||
|
[Tooltip("Fit graphic's transform to target transform on LateUpdate every frame.")]
|
||||||
[Tooltip("Fit graphic's transform to target transform on LateUpdate every frame.")]
|
[SerializeField] bool m_FitOnLateUpdate;
|
||||||
[SerializeField] private bool m_FitOnLateUpdate;
|
[Tooltip ("Unmask affects only for children.")]
|
||||||
|
[SerializeField] bool m_OnlyForChildren = false;
|
||||||
[Tooltip("Unmask affects only for children.")]
|
[Tooltip("Show the graphic that is associated with the unmask render area.")]
|
||||||
[SerializeField] private bool m_OnlyForChildren = false;
|
[SerializeField] bool m_ShowUnmaskGraphic = false;
|
||||||
|
|
||||||
[Tooltip("Show the graphic that is associated with the unmask render area.")]
|
|
||||||
[SerializeField] private bool m_ShowUnmaskGraphic = false;
|
|
||||||
|
|
||||||
[Tooltip("Edge smoothing.")]
|
|
||||||
[Range(0f, 1f)]
|
|
||||||
[SerializeField] private float m_EdgeSmoothing = 0f;
|
|
||||||
|
|
||||||
|
|
||||||
|
//################################
|
||||||
|
// Public Members.
|
||||||
|
//################################
|
||||||
|
/// <summary>
|
||||||
|
/// The graphic associated with the unmask.
|
||||||
|
/// </summary>
|
||||||
|
public Graphic graphic{ get { return _graphic ?? (_graphic = GetComponent<Graphic>()); } }
|
||||||
|
|
||||||
//################################
|
/// <summary>
|
||||||
// Public Members.
|
/// Fit graphic's transform to target transform.
|
||||||
//################################
|
/// </summary>
|
||||||
/// <summary>
|
public RectTransform fitTarget
|
||||||
/// The graphic associated with the unmask.
|
{
|
||||||
/// </summary>
|
get { return m_FitTarget; }
|
||||||
public MaskableGraphic graphic { get { return _graphic ?? (_graphic = GetComponent<MaskableGraphic>()); } }
|
set
|
||||||
|
{
|
||||||
|
m_FitTarget = value;
|
||||||
|
FitTo(m_FitTarget);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fit graphic's transform to target transform.
|
/// Fit graphic's transform to target transform on LateUpdate every frame.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public RectTransform fitTarget
|
public bool fitOnLateUpdate{ get { return m_FitOnLateUpdate; } set { m_FitOnLateUpdate = value; } }
|
||||||
{
|
|
||||||
get { return m_FitTarget; }
|
|
||||||
set
|
|
||||||
{
|
|
||||||
m_FitTarget = value;
|
|
||||||
FitTo(m_FitTarget);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fit graphic's transform to target transform on LateUpdate every frame.
|
/// Show the graphic that is associated with the unmask render area.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool fitOnLateUpdate { get { return m_FitOnLateUpdate; } set { m_FitOnLateUpdate = value; } }
|
public bool showUnmaskGraphic
|
||||||
|
{
|
||||||
|
get { return m_ShowUnmaskGraphic; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
m_ShowUnmaskGraphic = value;
|
||||||
|
SetDirty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Show the graphic that is associated with the unmask render area.
|
/// Unmask affects only for children.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool showUnmaskGraphic
|
public bool onlyForChildren
|
||||||
{
|
{
|
||||||
get { return m_ShowUnmaskGraphic; }
|
get { return m_OnlyForChildren; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
m_ShowUnmaskGraphic = value;
|
m_OnlyForChildren = value;
|
||||||
SetDirty();
|
SetDirty ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unmask affects only for children.
|
/// Perform material modification in this function.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool onlyForChildren
|
/// <returns>Modified material.</returns>
|
||||||
{
|
/// <param name="baseMaterial">Configured Material.</param>
|
||||||
get { return m_OnlyForChildren; }
|
public Material GetModifiedMaterial(Material baseMaterial)
|
||||||
set
|
{
|
||||||
{
|
if (!isActiveAndEnabled)
|
||||||
m_OnlyForChildren = value;
|
{
|
||||||
SetDirty();
|
return baseMaterial;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
Transform stopAfter = MaskUtilities.FindRootSortOverrideCanvas(transform);
|
||||||
/// Edge smooting.
|
var stencilDepth = MaskUtilities.GetStencilDepth(transform, stopAfter);
|
||||||
/// </summary>
|
var desiredStencilBit = 1 << stencilDepth;
|
||||||
public float edgeSmoothing
|
|
||||||
{
|
|
||||||
get { return m_EdgeSmoothing; }
|
|
||||||
set { m_EdgeSmoothing = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
StencilMaterial.Remove(_unmaskMaterial);
|
||||||
/// Perform material modification in this function.
|
_unmaskMaterial = StencilMaterial.Add(baseMaterial, desiredStencilBit - 1, StencilOp.Invert, CompareFunction.Equal, m_ShowUnmaskGraphic ? ColorWriteMask.All : (ColorWriteMask)0, desiredStencilBit - 1, (1 << 8) - 1);
|
||||||
/// </summary>
|
|
||||||
/// <returns>Modified material.</returns>
|
|
||||||
/// <param name="baseMaterial">Configured Material.</param>
|
|
||||||
public Material GetModifiedMaterial(Material baseMaterial)
|
|
||||||
{
|
|
||||||
if (!isActiveAndEnabled)
|
|
||||||
{
|
|
||||||
return baseMaterial;
|
|
||||||
}
|
|
||||||
|
|
||||||
Transform stopAfter = MaskUtilities.FindRootSortOverrideCanvas(transform);
|
// Unmask affects only for children.
|
||||||
var stencilDepth = MaskUtilities.GetStencilDepth(transform, stopAfter);
|
var canvasRenderer = graphic.canvasRenderer;
|
||||||
var desiredStencilBit = 1 << stencilDepth;
|
if (m_OnlyForChildren)
|
||||||
|
{
|
||||||
|
StencilMaterial.Remove (_revertUnmaskMaterial);
|
||||||
|
_revertUnmaskMaterial = StencilMaterial.Add(baseMaterial, (1 << 7), StencilOp.Invert, CompareFunction.Equal, (ColorWriteMask)0, (1 << 7), (1 << 8) - 1);
|
||||||
|
canvasRenderer.hasPopInstruction = true;
|
||||||
|
canvasRenderer.popMaterialCount = 1;
|
||||||
|
canvasRenderer.SetPopMaterial (_revertUnmaskMaterial, 0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
canvasRenderer.hasPopInstruction = false;
|
||||||
|
canvasRenderer.popMaterialCount = 0;
|
||||||
|
}
|
||||||
|
|
||||||
StencilMaterial.Remove(_unmaskMaterial);
|
return _unmaskMaterial;
|
||||||
_unmaskMaterial = StencilMaterial.Add(baseMaterial, desiredStencilBit - 1, StencilOp.Invert, CompareFunction.Equal, m_ShowUnmaskGraphic ? ColorWriteMask.All : (ColorWriteMask)0, desiredStencilBit - 1, (1 << 8) - 1);
|
}
|
||||||
|
|
||||||
// Unmask affects only for children.
|
/// <summary>
|
||||||
var canvasRenderer = graphic.canvasRenderer;
|
/// Fit to target transform.
|
||||||
if (m_OnlyForChildren)
|
/// </summary>
|
||||||
{
|
/// <param name="target">Target transform.</param>
|
||||||
StencilMaterial.Remove(_revertUnmaskMaterial);
|
public void FitTo(RectTransform target)
|
||||||
_revertUnmaskMaterial = StencilMaterial.Add(baseMaterial, (1 << 7), StencilOp.Invert, CompareFunction.Equal, (ColorWriteMask)0, (1 << 7), (1 << 8) - 1);
|
{
|
||||||
canvasRenderer.hasPopInstruction = true;
|
var rt = transform as RectTransform;
|
||||||
canvasRenderer.popMaterialCount = 1;
|
|
||||||
canvasRenderer.SetPopMaterial(_revertUnmaskMaterial, 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
canvasRenderer.hasPopInstruction = false;
|
|
||||||
canvasRenderer.popMaterialCount = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return _unmaskMaterial;
|
rt.pivot = target.pivot;
|
||||||
}
|
rt.position = target.position;
|
||||||
|
rt.rotation = target.rotation;
|
||||||
|
|
||||||
/// <summary>
|
var s1 = target.lossyScale;
|
||||||
/// Fit to target transform.
|
var s2 = rt.parent.lossyScale;
|
||||||
/// </summary>
|
rt.localScale = new Vector3(s1.x / s2.x, s1.y / s2.y, s1.z / s2.z);
|
||||||
/// <param name="target">Target transform.</param>
|
rt.sizeDelta = target.rect.size;
|
||||||
public void FitTo(RectTransform target)
|
rt.anchorMax = rt.anchorMin = s_Center;
|
||||||
{
|
}
|
||||||
var rt = transform as RectTransform;
|
|
||||||
|
|
||||||
rt.pivot = target.pivot;
|
|
||||||
rt.position = target.position;
|
|
||||||
rt.rotation = target.rotation;
|
|
||||||
|
|
||||||
var s1 = target.lossyScale;
|
|
||||||
var s2 = rt.parent.lossyScale;
|
|
||||||
rt.localScale = new Vector3(s1.x / s2.x, s1.y / s2.y, s1.z / s2.z);
|
|
||||||
rt.sizeDelta = target.rect.size;
|
|
||||||
rt.anchorMax = rt.anchorMin = s_Center;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//################################
|
//################################
|
||||||
// Private Members.
|
// Private Members.
|
||||||
//################################
|
//################################
|
||||||
private Material _unmaskMaterial;
|
Material _unmaskMaterial;
|
||||||
private Material _revertUnmaskMaterial;
|
Material _revertUnmaskMaterial;
|
||||||
private MaskableGraphic _graphic;
|
Graphic _graphic;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This function is called when the object becomes enabled and active.
|
/// This function is called when the object becomes enabled and active.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void OnEnable()
|
void OnEnable()
|
||||||
{
|
{
|
||||||
if (m_FitTarget)
|
if (m_FitTarget)
|
||||||
{
|
{
|
||||||
FitTo(m_FitTarget);
|
FitTo(m_FitTarget);
|
||||||
}
|
}
|
||||||
SetDirty();
|
SetDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This function is called when the behaviour becomes disabled () or inactive.
|
/// This function is called when the behaviour becomes disabled () or inactive.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void OnDisable()
|
void OnDisable()
|
||||||
{
|
{
|
||||||
StencilMaterial.Remove(_unmaskMaterial);
|
StencilMaterial.Remove (_unmaskMaterial);
|
||||||
StencilMaterial.Remove(_revertUnmaskMaterial);
|
StencilMaterial.Remove (_revertUnmaskMaterial);
|
||||||
_unmaskMaterial = null;
|
_unmaskMaterial = null;
|
||||||
_revertUnmaskMaterial = null;
|
_revertUnmaskMaterial = null;
|
||||||
|
|
||||||
if (graphic)
|
if (graphic)
|
||||||
{
|
{
|
||||||
var canvasRenderer = graphic.canvasRenderer;
|
var canvasRenderer = graphic.canvasRenderer;
|
||||||
canvasRenderer.hasPopInstruction = false;
|
canvasRenderer.hasPopInstruction = false;
|
||||||
canvasRenderer.popMaterialCount = 0;
|
canvasRenderer.popMaterialCount = 0;
|
||||||
graphic.SetMaterialDirty();
|
graphic.SetMaterialDirty();
|
||||||
}
|
}
|
||||||
SetDirty();
|
SetDirty ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// LateUpdate is called every frame, if the Behaviour is enabled.
|
/// LateUpdate is called every frame, if the Behaviour is enabled.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void LateUpdate()
|
void LateUpdate()
|
||||||
{
|
{
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
if (m_FitTarget && (m_FitOnLateUpdate || !Application.isPlaying))
|
if (m_FitTarget && (m_FitOnLateUpdate || !Application.isPlaying))
|
||||||
#else
|
#else
|
||||||
if (m_FitTarget && m_FitOnLateUpdate)
|
if (m_FitTarget && m_FitOnLateUpdate)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
FitTo(m_FitTarget);
|
FitTo(m_FitTarget);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
Smoothing(graphic, m_EdgeSmoothing);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This function is called when the script is loaded or a value is changed in the inspector (Called in the editor only).
|
/// This function is called when the script is loaded or a value is changed in the inspector (Called in the editor only).
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void OnValidate()
|
void OnValidate()
|
||||||
{
|
{
|
||||||
SetDirty();
|
SetDirty();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Mark the graphic as dirty.
|
/// Mark the graphic as dirty.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void SetDirty()
|
void SetDirty()
|
||||||
{
|
{
|
||||||
if (graphic)
|
if (graphic)
|
||||||
{
|
{
|
||||||
graphic.SetMaterialDirty();
|
graphic.SetMaterialDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
private static void Smoothing(MaskableGraphic graphic, float smooth)
|
|
||||||
{
|
|
||||||
if (!graphic) return;
|
|
||||||
|
|
||||||
Profiler.BeginSample("[Unmask] Smoothing");
|
|
||||||
var canvasRenderer = graphic.canvasRenderer;
|
|
||||||
var currentColor = canvasRenderer.GetColor();
|
|
||||||
var targetAlpha = 1f;
|
|
||||||
if (graphic.maskable && 0 < smooth)
|
|
||||||
{
|
|
||||||
var currentAlpha = graphic.color.a * canvasRenderer.GetInheritedAlpha();
|
|
||||||
if (0 < currentAlpha)
|
|
||||||
{
|
|
||||||
targetAlpha = Mathf.Lerp(0.01f, 0.002f, smooth) / currentAlpha;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!Mathf.Approximately(currentColor.a, targetAlpha))
|
|
||||||
{
|
|
||||||
currentColor.a = Mathf.Clamp01(targetAlpha);
|
|
||||||
canvasRenderer.SetColor(currentColor);
|
|
||||||
}
|
|
||||||
|
|
||||||
Profiler.EndSample();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,42 +1,46 @@
|
||||||
using UnityEngine;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
|
||||||
namespace Coffee.UIExtensions
|
namespace Coffee.UIExtensions
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Unmask Raycast Filter.
|
/// Unmask Raycast Filter.
|
||||||
/// The ray passes through the unmasked rectangle.
|
/// The ray passes through the unmasked rectangle.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[AddComponentMenu("UI/Unmask/UnmaskRaycastFilter", 2)]
|
[AddComponentMenu("UI/Unmask/UnmaskRaycastFilter", 2)]
|
||||||
public class UnmaskRaycastFilter : MonoBehaviour, ICanvasRaycastFilter
|
public class UnmaskRaycastFilter : MonoBehaviour, ICanvasRaycastFilter
|
||||||
{
|
{
|
||||||
//################################
|
//################################
|
||||||
// Serialize Members.
|
// Serialize Members.
|
||||||
//################################
|
//################################
|
||||||
[Tooltip("Target unmask component. The ray passes through the unmasked rectangle.")]
|
[Tooltip("Target unmask component. The ray passes through the unmasked rectangle.")]
|
||||||
[SerializeField] private Unmask m_TargetUnmask;
|
[SerializeField] Unmask m_TargetUnmask;
|
||||||
|
|
||||||
|
|
||||||
//################################
|
//################################
|
||||||
// Public Members.
|
// Public Members.
|
||||||
//################################
|
//################################
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Target unmask component. Ray through the unmasked rectangle.
|
/// Target unmask component. Ray through the unmasked rectangle.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public Unmask targetUnmask { get { return m_TargetUnmask; } set { m_TargetUnmask = value; } }
|
public Unmask targetUnmask{ get { return m_TargetUnmask; } set { m_TargetUnmask = value; } }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Given a point and a camera is the raycast valid.
|
/// Given a point and a camera is the raycast valid.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Valid.</returns>
|
/// <returns>Valid.</returns>
|
||||||
/// <param name="sp">Screen position.</param>
|
/// <param name="sp">Screen position.</param>
|
||||||
/// <param name="eventCamera">Raycast camera.</param>
|
/// <param name="eventCamera">Raycast camera.</param>
|
||||||
public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
|
public bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
|
||||||
{
|
{
|
||||||
// Skip if deactived.
|
// Skip if deactived.
|
||||||
if (!isActiveAndEnabled || !m_TargetUnmask || !m_TargetUnmask.isActiveAndEnabled)
|
if (!isActiveAndEnabled || !m_TargetUnmask || !m_TargetUnmask.isActiveAndEnabled)
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// check inside
|
// check inside
|
||||||
if (eventCamera)
|
if (eventCamera)
|
||||||
|
|
@ -47,18 +51,18 @@ namespace Coffee.UIExtensions
|
||||||
{
|
{
|
||||||
return !RectTransformUtility.RectangleContainsScreenPoint((m_TargetUnmask.transform as RectTransform), sp);
|
return !RectTransformUtility.RectangleContainsScreenPoint((m_TargetUnmask.transform as RectTransform), sp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//################################
|
//################################
|
||||||
// Private Members.
|
// Private Members.
|
||||||
//################################
|
//################################
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// This function is called when the object becomes enabled and active.
|
/// This function is called when the object becomes enabled and active.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
void OnEnable()
|
void OnEnable()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
"name": "com.coffee.unmask",
|
"name": "com.coffee.unmask",
|
||||||
"displayName": "UI Unmask",
|
"displayName": "UI Unmask",
|
||||||
"description": "Reverse mask for uGUI element in Unity.",
|
"description": "Reverse mask for uGUI element in Unity.",
|
||||||
"version": "1.4.2",
|
"version": "1.3.0",
|
||||||
"unity": "2017.1",
|
"unity": "2017.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue