Compare commits

..

No commits in common. "33356da2c43fa28397192baee70910c978e3169f" and "1b5588f41819df522031902a78fdd941abf3d903" have entirely different histories.

9 changed files with 291 additions and 701 deletions

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -1,16 +1,18 @@
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)
{ {
@ -29,13 +31,5 @@ namespace Coffee.UIExtensions.Demos
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;
}
}
} }
} }

View File

@ -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:

View File

@ -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;

View File

@ -1,5 +1,6 @@
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;
@ -16,28 +17,20 @@ namespace Coffee.UIExtensions
//################################ //################################
// 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] private bool m_FitOnLateUpdate; [SerializeField] bool m_FitOnLateUpdate;
[Tooltip ("Unmask affects only for children.")]
[Tooltip("Unmask affects only for children.")] [SerializeField] bool m_OnlyForChildren = false;
[SerializeField] private bool m_OnlyForChildren = false;
[Tooltip("Show the graphic that is associated with the unmask render area.")] [Tooltip("Show the graphic that is associated with the unmask render area.")]
[SerializeField] private bool m_ShowUnmaskGraphic = false; [SerializeField] bool m_ShowUnmaskGraphic = false;
[Tooltip("Edge smoothing.")]
[Range(0f, 1f)]
[SerializeField] private float m_EdgeSmoothing = 0f;
//################################ //################################
@ -46,7 +39,7 @@ namespace Coffee.UIExtensions
/// <summary> /// <summary>
/// The graphic associated with the unmask. /// The graphic associated with the unmask.
/// </summary> /// </summary>
public MaskableGraphic graphic { get { return _graphic ?? (_graphic = GetComponent<MaskableGraphic>()); } } public Graphic graphic{ get { return _graphic ?? (_graphic = GetComponent<Graphic>()); } }
/// <summary> /// <summary>
/// Fit graphic's transform to target transform. /// Fit graphic's transform to target transform.
@ -64,7 +57,7 @@ namespace Coffee.UIExtensions
/// <summary> /// <summary>
/// Fit graphic's transform to target transform on LateUpdate every frame. /// Fit graphic's transform to target transform on LateUpdate every frame.
/// </summary> /// </summary>
public bool fitOnLateUpdate { get { return m_FitOnLateUpdate; } set { m_FitOnLateUpdate = value; } } public bool fitOnLateUpdate{ get { return m_FitOnLateUpdate; } set { m_FitOnLateUpdate = value; } }
/// <summary> /// <summary>
/// Show the graphic that is associated with the unmask render area. /// Show the graphic that is associated with the unmask render area.
@ -88,19 +81,10 @@ namespace Coffee.UIExtensions
set set
{ {
m_OnlyForChildren = value; m_OnlyForChildren = value;
SetDirty(); SetDirty ();
} }
} }
/// <summary>
/// Edge smooting.
/// </summary>
public float edgeSmoothing
{
get { return m_EdgeSmoothing; }
set { m_EdgeSmoothing = value; }
}
/// <summary> /// <summary>
/// Perform material modification in this function. /// Perform material modification in this function.
/// </summary> /// </summary>
@ -124,11 +108,11 @@ namespace Coffee.UIExtensions
var canvasRenderer = graphic.canvasRenderer; var canvasRenderer = graphic.canvasRenderer;
if (m_OnlyForChildren) if (m_OnlyForChildren)
{ {
StencilMaterial.Remove(_revertUnmaskMaterial); StencilMaterial.Remove (_revertUnmaskMaterial);
_revertUnmaskMaterial = StencilMaterial.Add(baseMaterial, (1 << 7), StencilOp.Invert, CompareFunction.Equal, (ColorWriteMask)0, (1 << 7), (1 << 8) - 1); _revertUnmaskMaterial = StencilMaterial.Add(baseMaterial, (1 << 7), StencilOp.Invert, CompareFunction.Equal, (ColorWriteMask)0, (1 << 7), (1 << 8) - 1);
canvasRenderer.hasPopInstruction = true; canvasRenderer.hasPopInstruction = true;
canvasRenderer.popMaterialCount = 1; canvasRenderer.popMaterialCount = 1;
canvasRenderer.SetPopMaterial(_revertUnmaskMaterial, 0); canvasRenderer.SetPopMaterial (_revertUnmaskMaterial, 0);
} }
else else
{ {
@ -162,14 +146,14 @@ namespace Coffee.UIExtensions
//################################ //################################
// 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)
{ {
@ -181,10 +165,10 @@ namespace Coffee.UIExtensions
/// <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;
@ -195,13 +179,13 @@ namespace Coffee.UIExtensions
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))
@ -211,15 +195,13 @@ namespace Coffee.UIExtensions
{ {
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();
} }
@ -235,31 +217,5 @@ namespace Coffee.UIExtensions
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();
}
} }
} }

View File

@ -1,4 +1,8 @@
using UnityEngine; using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Coffee.UIExtensions namespace Coffee.UIExtensions
{ {
@ -13,7 +17,7 @@ namespace Coffee.UIExtensions
// 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;
//################################ //################################
@ -22,7 +26,7 @@ namespace Coffee.UIExtensions
/// <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.

View File

@ -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": {