update 0.5.8

This commit is contained in:
2026-06-24 15:16:59 +08:00
parent a71f9cfc93
commit f8edda498e
31 changed files with 1213 additions and 30 deletions
+326
View File
@@ -0,0 +1,326 @@
# XericUnityAnalyzer 规则文档
## 所有诊断规则一览
本文档列出 `com.lrss3.deconstruction` 包中 `XericUnityAnalyzer` Roslyn 分析器的所有诊断规则,
涵盖 MacroObjectUnity 层级/组件操作)和 MacroStringTextBlockBuilder 富文本)的优化建议。
---
### XRX0001 — 重复访问 Transform.parent 属性
| 属性 | 值 |
|------|---|
| 分类 | Usage |
| 严重性 | Warning |
**触发条件:** 对 Transform 对象的 `.parent` 属性进行重复链式访问(直接链式、变量中转、赋值链)。
**示例:**
```csharp
// 触发警告
transform.parent.parent;
Transform p = transform.parent;
p.parent; // ← 这里报警
```
**建议方案:** `MacroObject.GetParents()` 扩展方法,返回 `IEnumerable<Transform>`
---
### XRX0002 — 重复调用 GetParents()
| 属性 | 值 |
|------|---|
| 分类 | Performance |
| 严重性 | Warning |
**触发条件:** 在同一方法中对同一对象调用 `GetParents()` 超过 1 次。
**示例:**
```csharp
// 触发警告
transform.GetParents();
transform.GetParents(); // ← 第二次调用报警
```
**建议方案:** `MacroObject.GetParentsSafety()` 扩展方法,返回 `IList<Transform>` 可复用。
---
### XRX0003 — 重复调用 GetChild()
| 属性 | 值 |
|------|---|
| 分类 | Performance |
| 严重性 | Warning |
**触发条件:** 在同一方法中对同一对象调用 `Transform.GetChild()` 超过 1 次。
**示例:**
```csharp
// 触发警告
transform.GetChild(0);
transform.GetChild(1); // ← 第二次调用报警
```
**建议方案:** `MacroObject.GetChildren()` 扩展方法,一次性获取所有子节点。
---
### XRX0004 — for 循环 + GetChild 遍历子节点
| 属性 | 值 |
|------|---|
| 分类 | Usage |
| 严重性 | Warning |
**触发条件:** 使用 `for (int i = 0; i < xxx.childCount; i++)` 配合 `GetChild(i)` 遍历子节点。
**示例:**
```csharp
// 触发警告
for (int i = 0; i < transform.childCount; i++)
{
transform.GetChild(i); // ← 建议替换为 foreach
}
```
**建议方案:** `MacroObject.GetChildren()` 扩展方法,配合 `foreach` 更简洁。
---
### XRX0005 — 重复调用 GetChildren()
| 属性 | 值 |
|------|---|
| 分类 | Performance |
| 严重性 | Warning |
**触发条件:** 在同一方法中对同一对象调用 `GetChildren()` 超过 1 次。
**示例:**
```csharp
// 触发警告
transform.GetChildren();
transform.GetChildren(); // ← 第二次调用报警
```
**建议方案:** `MacroObject.GetChildrenSafety()` 扩展方法,返回 `IList<Transform>` 可复用。
---
### XRX0006 — GetChildren 后提取 gameObject
| 属性 | 值 |
|------|---|
| 分类 | Usage |
| 严重性 | Warning |
**触发条件:**`GetChildren()` 结果使用 `.Select(x => x.gameObject)` 或 LINQ 查询提取 gameObject。
**示例:**
```csharp
// 触发警告
transform.GetChildren().Select(c => c.gameObject);
// 或
from c in transform.GetChildren() select c.gameObject;
```
**建议方案:** `MacroObject.GetChildrenGameObject()` 扩展方法,直接返回 `IEnumerable<GameObject>`
---
### XRX0007 — 嵌套遍历子节点层级
| 属性 | 值 |
|------|---|
| 分类 | Usage |
| 严重性 | Warning |
**触发条件:** 嵌套调用 `GetChildren()` 或嵌套使用 for + GetChild 遍历多层子节点。
**示例:**
```csharp
// 触发警告
foreach (var child in transform.GetChildren())
{
foreach (var grandchild in child.GetChildren()) // ← 嵌套报警
{
// ...
}
}
```
**建议方案:** `MacroObject.GetChildrenBFS()` 扩展方法,BFS 一步到位返回所有层级子节点。
---
### XRX0008 — 在 parent 和 GetChild 之间跳跃访问
| 属性 | 值 |
|------|---|
| 分类 | Usage |
| 严重性 | Warning |
**触发条件:** 在同一方法中对同一对象同时访问 `.parent` 属性和调用 `GetChild()` 方法。
**示例:**
```csharp
// 触发警告
var p = transform.parent; // ← 访问父级
var c = transform.GetChild(0); // ← 访问子级
// 可能在寻找兄弟节点
```
**建议方案:** `MacroObject.GetBrother()` 扩展方法,返回所有兄弟节点。
---
### XRX0009 — GetComponent 判空后 AddComponent
| 属性 | 值 |
|------|---|
| 分类 | Usage |
| 严重性 | Warning |
**触发条件:** 先调用 `GetComponent<T>()`,判空后再调用 `AddComponent<T>()` 的"获取或添加"模式。
**示例:**
```csharp
// 触发警告
var comp = obj.GetComponent<Image>();
if (comp == null)
comp = obj.AddComponent<Image>();
```
**建议方案:** `MacroObject.GetComponentAnyway<T>()` 扩展方法,一步完成获取或添加。
---
### XRX0010 — 对枚举器逐项 GetComponent
| 属性 | 值 |
|------|---|
| 分类 | Usage |
| 严重性 | Warning |
**触发条件:**`.Select()` / `foreach` / `for` 循环中对成员逐项调用 `GetComponent`
**示例:**
```csharp
// 触发警告
transform.GetChildren().Select(c => c.GetComponent<Image>());
// 或
foreach (var child in transform.GetChildren())
child.GetComponent<Image>(); // ← 逐项报警
```
**建议方案:** `MacroObject.IEnumerable.GetComponent<T>()` 扩展方法,针对枚举器直接提取组件。
---
### XRX0011 — 循环中查找特定组件后跳出
| 属性 | 值 |
|------|---|
| 分类 | Usage |
| 严重性 | Warning |
**触发条件:** 在循环中逐项 GetComponent 并在找到后判空 break 的"搜索组件"模式。
**示例:**
```csharp
// 触发警告
Image found = null;
foreach (var child in transform.GetChildren())
{
found = child.GetComponent<Image>();
if (found != null) break; // ← 搜索模式报警
}
```
**建议方案:** `MacroObject.IEnumerable.GetComponent<T>(out T comp)` 扩展方法,一次完成搜索。
---
### XRX0012 — 通过名称查找返回对象
| 属性 | 值 |
|------|---|
| 分类 | Usage |
| 严重性 | Warning |
**触发条件:** 遍历子节点并比较 `.name` 来查找特定名称的对象(foreach + name == "xxx" + return)。
**示例:**
```csharp
// 触发警告
foreach (var child in transform.GetChildren())
{
if (child.name == "Target") // ← 名称比较
return child; // ← 找到返回
}
// 或 LINQ:
transform.GetChildren().FirstOrDefault(c => c.name == "Target");
```
**建议方案:** `MacroObject.FindFamilyMember()` / `FindFamilyMemberExact()` / `FindFamilyMemberFuzzy()` 扩展方法。
---
### XRX0101 — 富文本字符串字面量
| 属性 | 值 |
|------|---|
| 分类 | Usage |
| 严重性 | Warning |
**触发条件:** 检测到字符串字面量中包含类似 XML 的 Unity 富文本标签(如 `<b>`, `<color=...>`, `<line-height=...>` 等)。
**示例:**
```csharp
// 触发警告
var text = "<b>abc</b>";
```
**建议方案:** 使用 **TextBlockBuilder 包裹器语法****BlockUtilKit 框架语法** 进行类型安全构建:
<!-- 代码修复 1: TextBlockBuilder 语法 -->
```csharp
// 优化为 TextBlockBuilder 语法
new TextBlockBuilder()
{
new BBlock("abc")
}
```
<!-- 代码修复 2: 框架语法 -->
```csharp
// 优化为框架语法(配合 using static BlockUtilKit
Pure(
B(Label("abc"))
).BuildBlockByAgentOnce()
```
**注意:** 此规则提供两个 CodeFix 选项——"转换为 TextBlockBuilder 语法"和"转换为框架语法",可通过 IDE 的自动修复功能直接应用。
---
## 规则索引
| ID | 规则标题 | 文件 |
|----|---------|------|
| XRX0001 | 重复访问 parent 属性 | ObjectRelation |
| XRX0002 | 重复调用 GetParents() | ObjectRelation |
| XRX0003 | 重复调用 GetChild() | ObjectRelation |
| XRX0004 | for 循环 + GetChild 遍历 | ObjectRelation |
| XRX0005 | 重复调用 GetChildren() | ObjectRelation |
| XRX0006 | GetChildren + Select gameObject | ObjectRelation |
| XRX0007 | 嵌套遍历子节点层级 | ObjectRelation |
| XRX0008 | parent 和 GetChild 跳跃访问 | ObjectRelation |
| XRX0009 | GetComponent + AddComponent | ComponentSearch |
| XRX0010 | 枚举器逐项 GetComponent | ComponentSearch |
| XRX0011 | 循环查找特定组件 | ComponentSearch |
| XRX0012 | 名称查找返回对象 | FamilyNaming |
| XRX0101 | 富文本字符串字面量 | RichTextDetection |
Binary file not shown.
+292
View File
@@ -0,0 +1,292 @@
// Made with Amplify Shader Editor v1.9.9.1
// Available at the Unity Asset Store - http://u3d.as/y3X
Shader "XUIBasic"
{
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
_StencilComp ("Stencil Comparison", Float) = 8
_Stencil ("Stencil ID", Float) = 0
_StencilOp ("Stencil Operation", Float) = 0
_StencilWriteMask ("Stencil Write Mask", Float) = 255
_StencilReadMask ("Stencil Read Mask", Float) = 255
_ColorMask ("Color Mask", Float) = 15
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
_CoordTransform( "CoordTransform", Vector ) = ( 1, 1, 0, 0 )
_CoordCenterv2( "CoordCenter(v2)", Vector ) = ( 0.5, 0.5, 0, 0 )
_CoordRotateAngle( "CoordRotateAngle", Float ) = 0
[KeywordEnum( Gradient,Polygon )] _ElementType( "Element Type", Float ) = 0
[KeywordEnum( Linear,Sin,Cos,Exponential )] _GradientType( "GradientType", Float ) = 0
_ExpNumber( "ExpNumber", Float ) = 1
_ColorA( "Color A", Color ) = ( 0, 1, 0.07612991, 1 )
_ColorB( "Color B", Color ) = ( 1, 0, 0, 1 )
_PolygonSides( "PolygonSides", Float ) = 5
_PolygonSizev2( "PolygonSize(v2)", Vector ) = ( 0.5, 0.5, 0, 0 )
[KeywordEnum( Normal,Mode,ABS )] _CoordRange( "CoordRange", Float ) = 0
}
SubShader
{
LOD 0
Tags { "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" "CanUseSpriteAtlas"="True" }
Stencil
{
Ref [_Stencil]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
Comp [_StencilComp]
Pass [_StencilOp]
}
Cull Off
Lighting Off
ZWrite Off
ZTest [unity_GUIZTestMode]
Blend One OneMinusSrcAlpha
ColorMask [_ColorMask]
Pass
{
Name "Default"
CGPROGRAM
#define ASE_VERSION 19901
#pragma vertex vert
#pragma fragment frag
#pragma target 3.5
#include "UnityCG.cginc"
#include "UnityUI.cginc"
#pragma multi_compile_local _ UNITY_UI_CLIP_RECT
#pragma multi_compile_local _ UNITY_UI_ALPHACLIP
#define ASE_NEEDS_TEXTURE_COORDINATES0
#define ASE_NEEDS_FRAG_TEXTURE_COORDINATES0
#pragma shader_feature_local _ELEMENTTYPE_GRADIENT _ELEMENTTYPE_POLYGON
#pragma shader_feature_local _GRADIENTTYPE_LINEAR _GRADIENTTYPE_SIN _GRADIENTTYPE_COS _GRADIENTTYPE_EXPONENTIAL
#pragma shader_feature_local _COORDRANGE_NORMAL _COORDRANGE_MODE _COORDRANGE_ABS
struct appdata_t
{
float4 vertex : POSITION;
float4 color : COLOR;
float2 texcoord : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct v2f
{
float4 vertex : SV_POSITION;
fixed4 color : COLOR;
float2 texcoord : TEXCOORD0;
float4 worldPosition : TEXCOORD1;
float4 mask : TEXCOORD2;
UNITY_VERTEX_OUTPUT_STEREO
};
sampler2D _MainTex;
fixed4 _Color;
fixed4 _TextureSampleAdd;
float4 _ClipRect;
float4 _MainTex_ST;
float _UIMaskSoftnessX;
float _UIMaskSoftnessY;
uniform float4 _ColorA;
uniform float4 _ColorB;
uniform float4 _CoordTransform;
uniform float2 _CoordCenterv2;
uniform float _CoordRotateAngle;
uniform float _ExpNumber;
uniform float2 _PolygonSizev2;
uniform float _PolygonSides;
v2f vert(appdata_t v )
{
v2f OUT;
UNITY_SETUP_INSTANCE_ID(v);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
v.vertex.xyz += float3( 0, 0, 0 ) ;
float4 vPosition = UnityObjectToClipPos(v.vertex);
OUT.worldPosition = v.vertex;
OUT.vertex = vPosition;
float2 pixelSize = vPosition.w;
pixelSize /= float2(1, 1) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
float2 maskUV = (v.vertex.xy - clampedRect.xy) / (clampedRect.zw - clampedRect.xy);
OUT.texcoord = v.texcoord;
OUT.mask = float4(v.vertex.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_UIMaskSoftnessX, _UIMaskSoftnessY) + abs(pixelSize.xy)));
OUT.color = v.color * _Color;
return OUT;
}
fixed4 frag(v2f IN ) : SV_Target
{
//Round up the alpha color coming from the interpolator (to 1.0/256.0 steps)
//The incoming alpha could have numerical instability, which makes it very sensible to
//HDR color transparency blend, when it blends with the world's texture.
const half alphaPrecision = half(0xff);
const half invAlphaPrecision = half(1.0/alphaPrecision);
IN.color.a = round(IN.color.a * alphaPrecision)*invAlphaPrecision;
float2 texCoord1 = IN.texcoord.xy * (_CoordTransform).xy + (_CoordTransform).zw;
float cos2 = cos( ( ( _CoordRotateAngle * 2.0 ) * UNITY_PI ) );
float sin2 = sin( ( ( _CoordRotateAngle * 2.0 ) * UNITY_PI ) );
float2 rotator2 = mul( texCoord1 - _CoordCenterv2 , float2x2( cos2 , -sin2 , sin2 , cos2 )) + _CoordCenterv2;
float2 temp_output_2_0_g3 = rotator2;
float2 temp_output_3_0_g3 = float2( 1,1 );
float2 temp_output_1_0_g3 = ( temp_output_2_0_g3 % temp_output_3_0_g3 );
float2 temp_output_6_0_g3 = saturate( sign( temp_output_2_0_g3 ) );
float2 lerpResult4_g3 = lerp( ( ( temp_output_1_0_g3 + temp_output_3_0_g3 ) % temp_output_3_0_g3 ) , temp_output_1_0_g3 , temp_output_6_0_g3);
#if defined( _COORDRANGE_NORMAL )
float2 staticSwitch26 = rotator2;
#elif defined( _COORDRANGE_MODE )
float2 staticSwitch26 = lerpResult4_g3;
#elif defined( _COORDRANGE_ABS )
float2 staticSwitch26 = abs( rotator2 );
#else
float2 staticSwitch26 = rotator2;
#endif
float temp_output_18_0 = (staticSwitch26).x;
#if defined( _GRADIENTTYPE_LINEAR )
float staticSwitch13 = temp_output_18_0;
#elif defined( _GRADIENTTYPE_SIN )
float staticSwitch13 = sin( temp_output_18_0 );
#elif defined( _GRADIENTTYPE_COS )
float staticSwitch13 = cos( temp_output_18_0 );
#elif defined( _GRADIENTTYPE_EXPONENTIAL )
float staticSwitch13 = pow( temp_output_18_0 , _ExpNumber );
#else
float staticSwitch13 = temp_output_18_0;
#endif
float temp_output_2_0_g4 = _PolygonSides;
float cosSides12_g4 = cos( ( UNITY_PI / temp_output_2_0_g4 ) );
float2 appendResult18_g4 = (float2(( _PolygonSizev2.x * cosSides12_g4 ) , ( _PolygonSizev2.y * cosSides12_g4 )));
float2 break23_g4 = ( (staticSwitch26*2.0 + -1.0) / appendResult18_g4 );
float polarCoords30_g4 = atan2( break23_g4.x , -break23_g4.y );
float temp_output_52_0_g4 = ( 6.28318548202515 / temp_output_2_0_g4 );
float2 appendResult25_g4 = (float2(break23_g4.x , -break23_g4.y));
float2 finalUVs29_g4 = appendResult25_g4;
float temp_output_44_0_g4 = ( cos( ( ( floor( ( 0.5 + ( polarCoords30_g4 / temp_output_52_0_g4 ) ) ) * temp_output_52_0_g4 ) - polarCoords30_g4 ) ) * length( finalUVs29_g4 ) );
#if defined( _ELEMENTTYPE_GRADIENT )
float staticSwitch11 = staticSwitch13;
#elif defined( _ELEMENTTYPE_POLYGON )
float staticSwitch11 = saturate( ( ( 1.0 - temp_output_44_0_g4 ) / fwidth( temp_output_44_0_g4 ) ) );
#else
float staticSwitch11 = staticSwitch13;
#endif
float4 lerpResult14 = lerp( _ColorA , _ColorB , staticSwitch11);
float4 appendResult7 = (float4(lerpResult14));
half4 color = appendResult7;
#ifdef UNITY_UI_CLIP_RECT
half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw);
color.a *= m.x * m.y;
#endif
#ifdef UNITY_UI_ALPHACLIP
clip (color.a - 0.001);
#endif
color.rgb *= color.a;
return color;
}
ENDCG
}
}
CustomEditor "AmplifyShaderEditor.MaterialInspector"
Fallback Off
}
/*ASEBEGIN
Version=19901
Node;AmplifyShaderEditor.RangedFloatNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;5;-1408,256;Inherit;False;Property;_CoordRotateAngle;CoordRotateAngle;2;0;Create;True;0;0;0;False;0;False;0;0;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.Vector4Node, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;28;-1920,0;Inherit;False;Property;_CoordTransform;CoordTransform;0;0;Create;True;0;0;0;False;0;False;1,1,0,0;1,1,0,0;0;5;FLOAT4;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.SimpleMultiplyOpNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;9;-1184,256;Inherit;False;2;2;0;FLOAT;0;False;1;FLOAT;2;False;1;FLOAT;0
Node;AmplifyShaderEditor.ComponentMaskNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;30;-1664,96;Inherit;False;False;False;True;True;1;0;FLOAT4;0,0,0,0;False;1;FLOAT2;0
Node;AmplifyShaderEditor.ComponentMaskNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;29;-1664,16;Inherit;False;True;True;False;False;1;0;FLOAT4;0,0,0,0;False;1;FLOAT2;0
Node;AmplifyShaderEditor.TextureCoordinatesNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;1;-1408,0;Inherit;False;0;-1;2;3;2;SAMPLER2D;;False;0;FLOAT2;1,1;False;1;FLOAT2;0,0;False;5;FLOAT2;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4
Node;AmplifyShaderEditor.PiNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;8;-1024,256;Inherit;False;1;0;FLOAT;1;False;1;FLOAT;0
Node;AmplifyShaderEditor.Vector2Node, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;4;-1408,128;Inherit;False;Property;_CoordCenterv2;CoordCenter(v2);1;0;Create;True;0;0;0;False;0;False;0.5,0.5;0.5,0.5;0;3;FLOAT2;0;FLOAT;1;FLOAT;2
Node;AmplifyShaderEditor.Vector2Node, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;34;-768,-128;Inherit;False;Constant;_Vector0;Vector 0;11;0;Create;True;0;0;0;False;0;False;1,1;0,0;0;3;FLOAT2;0;FLOAT;1;FLOAT;2
Node;AmplifyShaderEditor.RotatorNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;2;-896,0;Inherit;False;3;0;FLOAT2;0,0;False;1;FLOAT2;0,0;False;2;FLOAT;1;False;1;FLOAT2;0
Node;AmplifyShaderEditor.FunctionNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;32;-512,0;Inherit;False;PMod;-1;;3;f21979a9080cb044ca372458f5a37d88;1,33,0;2;2;FLOAT2;0,0;False;3;FLOAT2;1,1;False;1;FLOAT2;0
Node;AmplifyShaderEditor.AbsOpNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;36;-480,128;Inherit;False;1;0;FLOAT2;0,0;False;1;FLOAT2;0
Node;AmplifyShaderEditor.StaticSwitch, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;26;-256,-128;Inherit;False;Property;_CoordRange;CoordRange;10;0;Create;True;0;0;0;False;0;False;0;0;0;True;;KeywordEnum;3;Normal;Mode;ABS;Create;True;True;All;9;1;FLOAT2;0,0;False;0;FLOAT2;0,0;False;2;FLOAT2;0,0;False;3;FLOAT2;0,0;False;4;FLOAT2;0,0;False;5;FLOAT2;0,0;False;6;FLOAT2;0,0;False;7;FLOAT2;0,0;False;8;FLOAT2;0,0;False;1;FLOAT2;0
Node;AmplifyShaderEditor.ComponentMaskNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;18;0,-128;Inherit;False;True;False;True;True;1;0;FLOAT2;0,0;False;1;FLOAT;0
Node;AmplifyShaderEditor.RangedFloatNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;23;0,96;Inherit;False;Property;_ExpNumber;ExpNumber;5;0;Create;True;0;0;0;False;0;False;1;0;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.SinOpNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;19;256,-64;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.CosOpNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;20;256,0;Inherit;False;1;0;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.PowerNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;22;256,64;Inherit;False;False;2;0;FLOAT;0;False;1;FLOAT;1;False;1;FLOAT;0
Node;AmplifyShaderEditor.Vector2Node, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;25;0,384;Inherit;False;Property;_PolygonSizev2;PolygonSize(v2);9;0;Create;True;0;0;0;False;0;False;0.5,0.5;0,0;0;3;FLOAT2;0;FLOAT;1;FLOAT;2
Node;AmplifyShaderEditor.RangedFloatNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;24;0,288;Inherit;False;Property;_PolygonSides;PolygonSides;8;0;Create;True;0;0;0;False;0;False;5;0;0;0;0;1;FLOAT;0
Node;AmplifyShaderEditor.FunctionNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;10;256,256;Inherit;False;Polygon;-1;;4;6906ef7087298c94c853d6753e182169;0;4;1;FLOAT2;0,0;False;2;FLOAT;5;False;3;FLOAT;0.5;False;4;FLOAT;0.5;False;1;FLOAT;0
Node;AmplifyShaderEditor.StaticSwitch, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;13;512,-128;Inherit;False;Property;_GradientType;GradientType;4;0;Create;True;0;0;0;False;0;False;0;0;0;True;;KeywordEnum;4;Linear;Sin;Cos;Exponential;Create;True;True;All;9;1;FLOAT;0;False;0;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT;0;False;7;FLOAT;0;False;8;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.StaticSwitch, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;11;896,-128;Inherit;False;Property;_ElementType;Element Type;3;0;Create;True;0;0;0;False;0;False;0;0;0;True;;KeywordEnum;2;Gradient;Polygon;Create;True;True;All;9;1;FLOAT;0;False;0;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;0;False;4;FLOAT;0;False;5;FLOAT;0;False;6;FLOAT;0;False;7;FLOAT;0;False;8;FLOAT;0;False;1;FLOAT;0
Node;AmplifyShaderEditor.ColorNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;15;896,-512;Inherit;False;Property;_ColorA;Color A;6;0;Create;True;0;0;0;False;0;False;0,1,0.07612991,1;0,1,0.07612991,1;True;True;0;6;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT3;5
Node;AmplifyShaderEditor.ColorNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;16;896,-320;Inherit;False;Property;_ColorB;Color B;7;0;Create;True;0;0;0;False;0;False;1,0,0,1;1,0,0,1;True;True;0;6;COLOR;0;FLOAT;1;FLOAT;2;FLOAT;3;FLOAT;4;FLOAT3;5
Node;AmplifyShaderEditor.LerpOp, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;14;1152,-384;Inherit;False;3;0;COLOR;0,0,0,0;False;1;COLOR;0,0,0,0;False;2;FLOAT;0;False;1;COLOR;0
Node;AmplifyShaderEditor.DynamicAppendNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;7;1312,-384;Inherit;False;FLOAT4;4;0;FLOAT4;0,0,0,0;False;1;FLOAT;0;False;2;FLOAT;0;False;3;FLOAT;1;False;1;FLOAT4;0
Node;AmplifyShaderEditor.TemplateMultiPassMasterNode, AmplifyShaderEditor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null;0;1472,-384;Float;False;True;-1;3;AmplifyShaderEditor.MaterialInspector;0;3;XUIBasic;5056123faa0c79b47ab6ad7e8bf059a4;True;Default;0;0;Default;2;False;True;3;1;False;;10;False;;0;1;False;;0;False;;False;False;False;False;False;False;False;False;False;False;False;False;True;2;False;;False;True;True;True;True;True;0;True;_ColorMask;False;False;False;False;False;False;False;True;True;0;True;_Stencil;255;True;_StencilReadMask;255;True;_StencilWriteMask;0;True;_StencilComp;0;True;_StencilOp;0;False;;0;False;;0;False;;0;False;;0;False;;0;False;;False;True;2;False;;True;0;True;unity_GUIZTestMode;False;True;5;Queue=Transparent=Queue=0;IgnoreProjector=True;RenderType=Transparent=RenderType;PreviewType=Plane;CanUseSpriteAtlas=True;False;False;0;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;False;True;3;False;0;;0;0;Standard;0;0;1;True;False;;False;0
WireConnection;9;0;5;0
WireConnection;30;0;28;0
WireConnection;29;0;28;0
WireConnection;1;0;29;0
WireConnection;1;1;30;0
WireConnection;8;0;9;0
WireConnection;2;0;1;0
WireConnection;2;1;4;0
WireConnection;2;2;8;0
WireConnection;32;2;2;0
WireConnection;32;3;34;0
WireConnection;36;0;2;0
WireConnection;26;1;2;0
WireConnection;26;0;32;0
WireConnection;26;2;36;0
WireConnection;18;0;26;0
WireConnection;19;0;18;0
WireConnection;20;0;18;0
WireConnection;22;0;18;0
WireConnection;22;1;23;0
WireConnection;10;1;26;0
WireConnection;10;2;24;0
WireConnection;10;3;25;1
WireConnection;10;4;25;2
WireConnection;13;1;18;0
WireConnection;13;0;19;0
WireConnection;13;2;20;0
WireConnection;13;3;22;0
WireConnection;11;1;13;0
WireConnection;11;0;10;0
WireConnection;14;0;15;0
WireConnection;14;1;16;0
WireConnection;14;2;11;0
WireConnection;7;0;14;0
WireConnection;0;0;7;0
ASEEND*/
//CHKSM=EF1BCF878CBE9DBF87503B5564BA985D4602AE12
@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 1b840b32ff140044cbe24edf0fea80a5
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
+59
View File
@@ -0,0 +1,59 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Xuib_Cube
m_Shader: {fileID: 4800000, guid: 1b840b32ff140044cbe24edf0fea80a5, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _COORDRANGE_NORMAL
- _ELEMENTTYPE_POLYGON
- _GRADIENTTYPE_LINEAR
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _ColorMask: 15
- _CoordRange: 0
- _CoordRotateAngle: 0
- _ElementType: 1
- _Elementtype: 0
- _ExpNumber: 1
- _GradientType: 0
- _PolygonSides: 4
- _PolygonSidesv1: 5
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _UseUIAlphaClip: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorA: {r: 1, g: 1, b: 1, a: 1}
- _ColorB: {r: 1, g: 1, b: 1, a: 0}
- _CoordCenter: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordCenterv2: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordTransform: {r: 1, g: 1, b: 0, a: 0}
- _PolygonSize: {r: 0.5, g: 0.5, b: 0, a: 0}
- _PolygonSizev2: {r: 1.25, g: 1.25, b: 0, a: 0}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 459b300b87daebf4589bfaee0ea18161
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,59 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Xuib_GradientX01
m_Shader: {fileID: 4800000, guid: 1b840b32ff140044cbe24edf0fea80a5, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _COORDRANGE_NORMAL
- _ELEMENTTYPE_GRADIENT
- _GRADIENTTYPE_EXPONENTIAL
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _ColorMask: 15
- _CoordRange: 0
- _CoordRotateAngle: 0.5
- _ElementType: 0
- _Elementtype: 0
- _ExpNumber: 0.5
- _GradientType: 3
- _PolygonSides: 5
- _PolygonSidesv1: 5
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _UseUIAlphaClip: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorA: {r: 1, g: 1, b: 1, a: 1}
- _ColorB: {r: 1, g: 1, b: 1, a: 0}
- _CoordCenter: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordCenterv2: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordTransform: {r: 1, g: 1, b: 0, a: 0}
- _PolygonSize: {r: 0.5, g: 0.5, b: 0, a: 0}
- _PolygonSizev2: {r: 0.5, g: 0.5, b: 0, a: 0}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 50533983623ed3340aa999ad69777864
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,59 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Xuib_GradientX010
m_Shader: {fileID: 4800000, guid: 1b840b32ff140044cbe24edf0fea80a5, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _COORDRANGE_ABS
- _ELEMENTTYPE_GRADIENT
- _GRADIENTTYPE_LINEAR
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _ColorMask: 15
- _CoordRange: 2
- _CoordRotateAngle: 0
- _ElementType: 0
- _Elementtype: 0
- _ExpNumber: 0.5
- _GradientType: 0
- _PolygonSides: 5
- _PolygonSidesv1: 5
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _UseUIAlphaClip: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorA: {r: 1, g: 1, b: 1, a: 1}
- _ColorB: {r: 1, g: 1, b: 1, a: 0}
- _CoordCenter: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordCenterv2: {r: 0, g: 0.5, b: 0, a: 0}
- _CoordTransform: {r: 2, g: 2, b: -1, a: 0}
- _PolygonSize: {r: 0.5, g: 0.5, b: 0, a: 0}
- _PolygonSizev2: {r: 0.5, g: 0.5, b: 0, a: 0}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 97c6ab2cffb9c564a97a2df07ded5499
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,59 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Xuib_GradientX10
m_Shader: {fileID: 4800000, guid: 1b840b32ff140044cbe24edf0fea80a5, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _COORDRANGE_NORMAL
- _ELEMENTTYPE_GRADIENT
- _GRADIENTTYPE_EXPONENTIAL
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _ColorMask: 15
- _CoordRange: 0
- _CoordRotateAngle: 0
- _ElementType: 0
- _Elementtype: 0
- _ExpNumber: 0.5
- _GradientType: 3
- _PolygonSides: 5
- _PolygonSidesv1: 5
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _UseUIAlphaClip: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorA: {r: 1, g: 1, b: 1, a: 1}
- _ColorB: {r: 1, g: 1, b: 1, a: 0}
- _CoordCenter: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordCenterv2: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordTransform: {r: 1, g: 1, b: 0, a: 0}
- _PolygonSize: {r: 0.5, g: 0.5, b: 0, a: 0}
- _PolygonSizev2: {r: 0.5, g: 0.5, b: 0, a: 0}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4a8f3de3cefc1544c8e35a5c155f5d4a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,57 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Xuib_GradientY01
m_Shader: {fileID: 4800000, guid: 1b840b32ff140044cbe24edf0fea80a5, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _COORDRANGE_NORMAL
- _ELEMENTTYPE_GRADIENT
- _GRADIENTTYPE_EXPONENTIAL
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _ColorMask: 15
- _CoordRange: 0
- _CoordRotateAngle: 0.25
- _ElementType: 0
- _Elementtype: 0
- _ExpNumber: 0.5
- _GradientType: 3
- _PolygonSides: 5
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _UseUIAlphaClip: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorA: {r: 1, g: 1, b: 1, a: 1}
- _ColorB: {r: 1, g: 1, b: 1, a: 0}
- _CoordCenter: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordCenterv2: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordTransform: {r: 1, g: 1, b: 0, a: 0}
- _PolygonSizev2: {r: 0.5, g: 0.5, b: 0, a: 0}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 842f2052018d45b4cbee58f9e3aa126a
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,59 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Xuib_GradientY010
m_Shader: {fileID: 4800000, guid: 1b840b32ff140044cbe24edf0fea80a5, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _COORDRANGE_ABS
- _ELEMENTTYPE_GRADIENT
- _GRADIENTTYPE_LINEAR
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _ColorMask: 15
- _CoordRange: 2
- _CoordRotateAngle: 0.25
- _ElementType: 0
- _Elementtype: 0
- _ExpNumber: 0.5
- _GradientType: 0
- _PolygonSides: 5
- _PolygonSidesv1: 5
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _UseUIAlphaClip: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorA: {r: 1, g: 1, b: 1, a: 1}
- _ColorB: {r: 1, g: 1, b: 1, a: 0}
- _CoordCenter: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordCenterv2: {r: 0, g: 0.5, b: 0, a: 0}
- _CoordTransform: {r: 2, g: 2, b: 0, a: -0.5}
- _PolygonSize: {r: 0.5, g: 0.5, b: 0, a: 0}
- _PolygonSizev2: {r: 0.5, g: 0.5, b: 0, a: 0}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 056550500989d154080e2aab1e25f3f9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,59 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Xuib_GradientY10
m_Shader: {fileID: 4800000, guid: 1b840b32ff140044cbe24edf0fea80a5, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _COORDRANGE_NORMAL
- _ELEMENTTYPE_GRADIENT
- _GRADIENTTYPE_EXPONENTIAL
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _ColorMask: 15
- _CoordRange: 0
- _CoordRotateAngle: 0.75
- _ElementType: 0
- _Elementtype: 0
- _ExpNumber: 0.5
- _GradientType: 3
- _PolygonSides: 5
- _PolygonSidesv1: 5
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _UseUIAlphaClip: 0
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorA: {r: 1, g: 1, b: 1, a: 1}
- _ColorB: {r: 1, g: 1, b: 1, a: 0}
- _CoordCenter: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordCenterv2: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CoordTransform: {r: 1, g: 1, b: 0, a: 0}
- _PolygonSize: {r: 0.5, g: 0.5, b: 0, a: 0}
- _PolygonSizev2: {r: 0.5, g: 0.5, b: 0, a: 0}
m_BuildTextureStacks: []
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3481ff25eecee72449e5e93a6fa64ee8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:
+20 -18
View File
@@ -4,7 +4,7 @@ using UnityEngine.Events;
using UnityEngine.EventSystems;
using XericLibrary.Runtime.MacroLibrary;
namespace DigitalTwinTool
namespace Deconstruction.Runtime
{
public static class MacroEventTrigger
{
@@ -84,49 +84,49 @@ namespace DigitalTwinTool
#region
public static EventTrigger.TriggerEvent OnPointerEnter(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onPointerEnter(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.PointerEnter);
public static EventTrigger.TriggerEvent OnPointerExit(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onPointerExit(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.PointerExit);
public static EventTrigger.TriggerEvent OnPointerDown(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onPointerDown(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.PointerDown);
public static EventTrigger.TriggerEvent OnPointerUp(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onPointerUp(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.PointerUp);
public static EventTrigger.TriggerEvent OnPointerClick(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onPointerClick(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.PointerClick);
public static EventTrigger.TriggerEvent OnDrag(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onDrag(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.Drag);
public static EventTrigger.TriggerEvent OnDrop(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onDrop(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.Drop);
public static EventTrigger.TriggerEvent OnScroll(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onScroll(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.Scroll);
public static EventTrigger.TriggerEvent OnUpdateSelected(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onUpdateSelected(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.UpdateSelected);
public static EventTrigger.TriggerEvent OnSelect(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onSelect(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.Select);
public static EventTrigger.TriggerEvent OnDeselect(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onDeselect(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.Deselect);
public static EventTrigger.TriggerEvent OnMove(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onMove(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.Move);
public static EventTrigger.TriggerEvent OnInitializePotentialDrag(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onInitializePotentialDrag(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.InitializePotentialDrag);
public static EventTrigger.TriggerEvent OnBeginDrag(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onBeginDrag(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.BeginDrag);
public static EventTrigger.TriggerEvent OnEndDrag(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onEndDrag(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.EndDrag);
/// <summary>
@@ -134,10 +134,10 @@ namespace DigitalTwinTool
/// </summary>
/// <param name="eventTrigger"></param>
/// <returns></returns>
public static EventTrigger.TriggerEvent OnSubmit(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onSubmit(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.Submit);
public static EventTrigger.TriggerEvent OnCancel(this EventTrigger eventTrigger)
public static EventTrigger.TriggerEvent onCancel(this EventTrigger eventTrigger)
=> eventTrigger.GetEventTrigger(EventTriggerType.Cancel);
private static EventTrigger.TriggerEvent GetEventTrigger(this EventTrigger eventTrigger, EventTriggerType type)
@@ -160,6 +160,8 @@ namespace DigitalTwinTool
return e;
}
public static void ClearAllEventTrigger(this EventTrigger eventTrigger) => eventTrigger.triggers.Clear();
#endregion
}
}
+25 -9
View File
@@ -6,26 +6,42 @@ using UnityEngine;
using UnityEngine.UI;
using XericLibrary.Runtime.MacroLibrary;
namespace DigitalTwinTool
namespace Deconstruction.Runtime
{
public static class MacroLayout
{
/// <summary>
/// 将布局组标记为脏,以触发重算。
/// 将布局组标记为脏,以触发重算布局
/// </summary>
/// <param name="layoutGroup"></param>
public static void SetDirty(this LayoutGroup layoutGroup)
public static void SetLayoutDirty(this LayoutGroup layoutGroup)
{
var type = typeof(LayoutGroup);
var method = type.GetMethod("SetDirty", BindingFlags.Instance | BindingFlags.NonPublic);
method?.Invoke(layoutGroup, null);
// var type = typeof(LayoutGroup);
// var method = type.GetMethod("SetDirty", BindingFlags.Instance | BindingFlags.NonPublic);
// method?.Invoke(layoutGroup, null);
LayoutRebuilder.ForceRebuildLayoutImmediate(layoutGroup.RectTransform());
}
private static HashSet<RectTransform> _rebuildSet = new HashSet<RectTransform>();
public static void WaitParentLayoutRebuild(this MonoBehaviour script)
/// <summary>
/// 将canvas组件白哦及为脏,以触发canvas充算布局
/// </summary>
/// <param name="rectTrans"></param>
public static void SetLayoutDirty(this RectTransform rectTrans)
{
LayoutRebuilder.ForceRebuildLayoutImmediate(rectTrans);
}
private static HashSet<RectTransform> _rebuildSet = new HashSet<RectTransform>();
/// <summary>
/// 等待这帧过去之后再触发重建
/// </summary>
/// <param name="script"></param>
public static void WaitParentLayoutRebuildThenRebuildAgen(this MonoBehaviour script)
{
if (!script.RectTransform())
return;
script.StartCoroutine(waitForRebuild());
return;
IEnumerator waitForRebuild()
{
Binary file not shown.
+33
View File
@@ -0,0 +1,33 @@
fileFormatVersion: 2
guid: af972e12c8e41814188a98b92de42e0c
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 1
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: AnyCPU
userData:
assetBundleName:
assetBundleVariant:
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "Lrss3.Deconstruction",
"rootNamespace": "Deconstruction",
"references": [
"GUID:6055be8ebefd69e48b49212b09b47b2f"
"Unity.TextMeshPro"
],
"includePlatforms": [],
"excludePlatforms": [],
@@ -60,7 +60,9 @@ namespace Deconstruction.UI.TmpText
/// <summary>
/// 当前超链接管理器下的所有超链接
/// </summary>
#if ODIN_INSPECTOR
[ShowInInspector]
#endif
public List<TMPHyperlinkReceiver> Children { get; internal set; }
/// <summary>
+1 -1
View File
@@ -115,7 +115,7 @@ namespace Deconstruction.UI.TmpText
}
catch (Exception e)
{
Debug.LogError($"超链接目标事件存在错误 {_tmpText.text.LimitStringLength(32)} \n{e.Message}\n{e.Data}", this);
Debug.LogError($"超链接目标事件存在错误 {_tmpText.text.LimitStringLength(32)} \n{e.Message}\n{e}\n\n", this);
}
}
}
+8
View File
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 579f0719bf2bbad4cbf32941bd430366
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,23 @@
安装说明
--------
这个目录包含 Xeric Library 的 Roslyn 语法分析器 DLL。
重要:DLL 不能放在深层目录!
==============================
Rider / VS 等 IDE 在扫描 Roslyn Analyzer 时,只会识别浅层目录下的 DLL。
如果 DLL 被放在过深的路径中,IDE 将不会加载它,代码检查也会失效。
推荐放置位置(任选其一):
Assets/ ← 项目根目录(直接放入)
Assets/Editor/ ← Editor 专用目录
Assets/Plugins/ ← 传统插件目录
不推荐的位置:
Assets/Samples/.../XericUnityAnalyzer/ ← Sample 导入后默认在这里,IDE 可能不识别!
因此,从 Package Manager 导入此 Sample 后,请手动将 XericUnityAnalyzer.dll
移动到上述推荐位置之一,然后删除原 Sample 目录即可。
+6 -1
View File
File diff suppressed because one or more lines are too long