diff --git a/CHANGELOG.md b/CHANGELOG.md
index 91b04c4..fd5eda4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,26 @@
+# [1.0.0-preview.1](https://github.com/mob-sakai/SoftMaskForUGUI/compare/v0.10.0-preview.3...v1.0.0-preview.1) (2020-05-11)
+
+
+### Bug Fixes
+
+* Unintentional material destruction ([ab71747](https://github.com/mob-sakai/SoftMaskForUGUI/commit/ab7174773bb16a3b3c29e1bf9e34c0bd6d71b229))
+
+
+### change
+
+* change namespace ([ad59523](https://github.com/mob-sakai/SoftMaskForUGUI/commit/ad59523369ca7dd5d273de37f464b932246794fa))
+
+
+### Features
+
+* support graphic connector ([bd1ac08](https://github.com/mob-sakai/SoftMaskForUGUI/commit/bd1ac08f422eb2b47f3fe0d39e0d8dc13ea0a318)), closes [#75](https://github.com/mob-sakai/SoftMaskForUGUI/issues/75) [#76](https://github.com/mob-sakai/SoftMaskForUGUI/issues/76) [#80](https://github.com/mob-sakai/SoftMaskForUGUI/issues/80)
+
+
+### BREAKING CHANGES
+
+* If your code contained the SoftMask API, it would fail to compile. Please change the namespace from `Coffee.UIExtensions` to `Coffee.UISoftMask`.
+* The name of the custom SoftMaskable shader must be changed. For more information, see the ‘Support soft masks with your custom shaders’ section of the README.
+
# [0.10.0-preview.3](https://github.com/mob-sakai/SoftMaskForUGUI/compare/v0.10.0-preview.2...v0.10.0-preview.3) (2020-05-08)
diff --git a/README.md b/README.md
index 1858a06..2bd0df9 100644
--- a/README.md
+++ b/README.md
@@ -155,8 +155,20 @@ Or, add a SoftMaskable components from the inspector of the SoftMask component.
## Support soft masks with your custom shaders
-With just three additional lines, you can now support softmasks in your custom shaders!
+Only a few steps are needed to support soft mask in your custom shaders!
+1. Duplicate your shader file and add the ` (SoftMaskable)` suffix to the file name.
+```
+Your_Custom_Shader.shader
+-> Your_Custom_Shader (SoftMaskable).shader
+```
+1. Modify the shader name (defined at the beginning of the shader file) as follows:
+ - Add `Hidden/` prefix
+ - Add ` (SoftMaskable)` suffix
+```
+Shader "UI/Your_Custom_Shader"
+-> Shader "Hidden/UI/Your_Custom_Shader (SoftMaskable)"
+```
1. Add `#pragma` and `#include` directives, where `SOFTMASK_EDITOR` is an editor-only keyword and is not included in the build.
If you didn't use package manager to install, include `SoftMask.cginc` in the appropriate path instead.
```
diff --git a/Samples~/Demo/Light_Frame.png.meta b/Samples~/Demo/Light_Frame.png.meta
index e6b51b0..571aeeb 100644
--- a/Samples~/Demo/Light_Frame.png.meta
+++ b/Samples~/Demo/Light_Frame.png.meta
@@ -1,10 +1,9 @@
fileFormatVersion: 2
guid: 3ad57d818b4f448a190e524e494130b0
-timeCreated: 1539763439
-licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
- serializedVersion: 4
+ externalObjects: {}
+ serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 1
@@ -12,6 +11,8 @@ TextureImporter:
linearTexture: 0
fadeOut: 0
borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
@@ -20,6 +21,8 @@ TextureImporter:
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@@ -27,10 +30,13 @@ TextureImporter:
textureFormat: 1
maxTextureSize: 2048
textureSettings:
+ serializedVersion: 2
filterMode: -1
aniso: 16
- mipBias: -1
- wrapMode: -1
+ mipBias: -100
+ wrapU: -1
+ wrapV: -1
+ wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
@@ -39,62 +45,88 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
+ singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - buildTarget: DefaultTexturePlatform
+ - serializedVersion: 2
+ buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: Standalone
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: Standalone
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: iPhone
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: iPhone
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: Android
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: Android
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: WebGL
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: WebGL
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
+ androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
+ physicsShape: []
+ bones: []
+ spriteID: 1a57a60f7f37742a2bb34df8b6da51de
+ vertices: []
+ indices:
+ edges: []
+ weights: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Samples~/Demo/SoftMask-Circle.png.meta b/Samples~/Demo/SoftMask-Circle.png.meta
index 0beb757..2d9ef59 100644
--- a/Samples~/Demo/SoftMask-Circle.png.meta
+++ b/Samples~/Demo/SoftMask-Circle.png.meta
@@ -3,7 +3,7 @@ guid: dee1cb6c2ee294c6087ea9d89d368417
TextureImporter:
fileIDToRecycleName: {}
externalObjects: {}
- serializedVersion: 4
+ serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -21,6 +21,8 @@ TextureImporter:
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@@ -31,7 +33,7 @@ TextureImporter:
serializedVersion: 2
filterMode: 1
aniso: -1
- mipBias: -1
+ mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
@@ -51,11 +53,13 @@ TextureImporter:
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
+ singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - buildTarget: DefaultTexturePlatform
+ - serializedVersion: 2
+ buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
@@ -65,7 +69,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - buildTarget: Standalone
+ - serializedVersion: 2
+ buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
@@ -75,7 +80,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - buildTarget: iPhone
+ - serializedVersion: 2
+ buildTarget: iPhone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
@@ -85,7 +91,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - buildTarget: Android
+ - serializedVersion: 2
+ buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
@@ -95,7 +102,8 @@ TextureImporter:
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
- - buildTarget: WebGL
+ - serializedVersion: 2
+ buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
@@ -110,7 +118,15 @@ TextureImporter:
sprites: []
outline: []
physicsShape: []
+ bones: []
+ spriteID: 2775f4bfe28684615aa97cccf30fd220
+ vertices: []
+ indices:
+ edges: []
+ weights: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Samples~/Demo/SoftMask-Horizontal.png.meta b/Samples~/Demo/SoftMask-Horizontal.png.meta
index 715b93b..72808bc 100644
--- a/Samples~/Demo/SoftMask-Horizontal.png.meta
+++ b/Samples~/Demo/SoftMask-Horizontal.png.meta
@@ -1,10 +1,9 @@
fileFormatVersion: 2
guid: f3749669408984358921fc148ed3aa83
-timeCreated: 1542628474
-licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
- serializedVersion: 4
+ externalObjects: {}
+ serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -22,6 +21,8 @@ TextureImporter:
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@@ -32,7 +33,7 @@ TextureImporter:
serializedVersion: 2
filterMode: -1
aniso: -1
- mipBias: -1
+ mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
@@ -44,63 +45,88 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 31, y: 0, z: 31, w: 0}
spritePixelsToUnits: 100
+ spriteBorder: {x: 31, y: 0, z: 31, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
+ singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - buildTarget: DefaultTexturePlatform
+ - serializedVersion: 2
+ buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: Standalone
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: Standalone
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: iPhone
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: iPhone
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: Android
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: Android
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: WebGL
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: WebGL
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
+ androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
+ bones: []
+ spriteID: af5cd8d820f234217a321d94198ab089
+ vertices: []
+ indices:
+ edges: []
+ weights: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Samples~/Demo/SoftMask-Star.png.meta b/Samples~/Demo/SoftMask-Star.png.meta
index fbfaf14..ea1b06c 100644
--- a/Samples~/Demo/SoftMask-Star.png.meta
+++ b/Samples~/Demo/SoftMask-Star.png.meta
@@ -1,10 +1,9 @@
fileFormatVersion: 2
guid: 801e306fcae92475592a6d3511bf58d7
-timeCreated: 1540708816
-licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
- serializedVersion: 4
+ externalObjects: {}
+ serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -22,6 +21,8 @@ TextureImporter:
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@@ -32,7 +33,7 @@ TextureImporter:
serializedVersion: 2
filterMode: 1
aniso: -1
- mipBias: -1
+ mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
@@ -44,63 +45,88 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
+ singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - buildTarget: DefaultTexturePlatform
+ - serializedVersion: 2
+ buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: Standalone
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: Standalone
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: iPhone
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: iPhone
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: Android
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: Android
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: WebGL
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: WebGL
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
+ androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
+ bones: []
+ spriteID: 8058b3f596fe543db9d4d736085b08b5
+ vertices: []
+ indices:
+ edges: []
+ weights: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Samples~/Demo/SoftMask-Vertictal.png.meta b/Samples~/Demo/SoftMask-Vertictal.png.meta
index a319e1a..41e87a1 100644
--- a/Samples~/Demo/SoftMask-Vertictal.png.meta
+++ b/Samples~/Demo/SoftMask-Vertictal.png.meta
@@ -1,10 +1,9 @@
fileFormatVersion: 2
guid: 0f125745ff7d640519fb2300ed8a96c7
-timeCreated: 1542628487
-licenseType: Pro
TextureImporter:
fileIDToRecycleName: {}
- serializedVersion: 4
+ externalObjects: {}
+ serializedVersion: 9
mipmaps:
mipMapMode: 0
enableMipMap: 0
@@ -22,6 +21,8 @@ TextureImporter:
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
@@ -32,7 +33,7 @@ TextureImporter:
serializedVersion: 2
filterMode: -1
aniso: -1
- mipBias: -1
+ mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
@@ -44,63 +45,88 @@ TextureImporter:
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
- spriteBorder: {x: 0, y: 31, z: 0, w: 31}
spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 31, z: 0, w: 31}
+ spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
+ singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
platformSettings:
- - buildTarget: DefaultTexturePlatform
+ - serializedVersion: 2
+ buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: Standalone
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: Standalone
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: iPhone
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: iPhone
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: Android
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: Android
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
- - buildTarget: WebGL
+ androidETC2FallbackOverride: 0
+ - serializedVersion: 2
+ buildTarget: WebGL
maxTextureSize: 2048
+ resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
+ androidETC2FallbackOverride: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
+ bones: []
+ spriteID: cf7ce3728c4c646cf88a7a642c89aa74
+ vertices: []
+ indices:
+ edges: []
+ weights: []
spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Samples~/Demo/SoftMask_Demo.cs b/Samples~/Demo/SoftMask_Demo.cs
index 1bf7c9c..d110938 100644
--- a/Samples~/Demo/SoftMask_Demo.cs
+++ b/Samples~/Demo/SoftMask_Demo.cs
@@ -3,61 +3,57 @@
using UnityEngine;
using UnityEngine.UI;
-namespace Coffee.UIExtensions.Demos
+namespace Coffee.UISoftMask.Demos
{
- public class SoftMask_Demo : MonoBehaviour
- {
- [SerializeField] RawImage[] softMaskBufferViewer;
- [SerializeField] SoftMask[] softMask;
- [SerializeField] Text text;
+ public class SoftMask_Demo : MonoBehaviour
+ {
+ [SerializeField] RawImage[] softMaskBufferViewer;
+ [SerializeField] SoftMask[] softMask;
+ [SerializeField] Text text;
+ [SerializeField] GameObject title;
- // Use this for initialization
- void OnEnable()
- {
- text.text = string.Format("GPU: {0}\nDeviceType: {1}\nShaderLevel: {2}\nUVStartsAtTop: {3}",
+ // Use this for initialization
+ void OnEnable()
+ {
+ title.SetActive(true);
+
+ text.text = string.Format("GPU: {0}\nDeviceType: {1}\nShaderLevel: {2}\nUVStartsAtTop: {3}",
SystemInfo.graphicsDeviceName,
SystemInfo.graphicsDeviceType,
SystemInfo.graphicsShaderLevel,
SystemInfo.graphicsUVStartsAtTop);
- for (int i = 0; i < softMask.Length; i++)
- {
- softMaskBufferViewer[i].texture = softMask[i].softMaskBuffer;
- }
-
- }
-
- // Update is called once per frame
- void Update()
- {
-
- }
-
- public void SetWorldSpase(bool flag)
- {
- if(flag)
- {
- GetComponent