diff --git a/Demo/API_V2/Assets/API/APISO.asset b/Demo/API_V2/Assets/API/APISO.asset
index 55553c378..81b80af85 100644
--- a/Demo/API_V2/Assets/API/APISO.asset
+++ b/Demo/API_V2/Assets/API/APISO.asset
@@ -19,8 +19,8 @@ MonoBehaviour:
   - {fileID: 11400000, guid: 9977a581037b84833a32b508e00eb1a2, type: 2}
   - {fileID: 11400000, guid: 56f316e0e10ba419bbf19bd7a68bfc4c, type: 2}
   - {fileID: 11400000, guid: 6f0972f5fdc56c543b23c9873d760bf5, type: 2}
-  - {fileID: 11400000, guid: a461b8cd70d9e4e23ad1cc953bec31e9, type: 2}
   - {fileID: 11400000, guid: 7ef06699cee7846b7823e4cc421418eb, type: 2}
+  - {fileID: 11400000, guid: a461b8cd70d9e4e23ad1cc953bec31e9, type: 2}
   - {fileID: 11400000, guid: 55de20d536f8c4689bbd80553d87fe46, type: 2}
   - {fileID: 11400000, guid: f2c56d751bb7c4c398db7c1db352517d, type: 2}
   - {fileID: 11400000, guid: b4a6196f623dd4435a4f3bd70af92d06, type: 2}
diff --git a/Demo/API_V2/Assets/API/Facility/FacilitySO.asset b/Demo/API_V2/Assets/API/Facility/FacilitySO.asset
index 248fd99fc..f7bcd18e2 100644
--- a/Demo/API_V2/Assets/API/Facility/FacilitySO.asset
+++ b/Demo/API_V2/Assets/API/Facility/FacilitySO.asset
@@ -15,10 +15,10 @@ MonoBehaviour:
   categoryName: "\u8BBE\u5907"
   categorySprite: {fileID: 21300000, guid: 53dd2b1922e5142ec8a53037f362fc56, type: 3}
   entryList:
-  - {fileID: 11400000, guid: bbbc9b983d6d34ad3bac2921509f612f, type: 2}
-  - {fileID: 11400000, guid: c17ae0ce755f04419b700825b20fd386, type: 2}
   - {fileID: 11400000, guid: a24af43ae51914d26b0bf637c283dab2, type: 2}
   - {fileID: 11400000, guid: 4eba2c9f2f2064e4081be74302ca4c33, type: 2}
+  - {fileID: 11400000, guid: bbbc9b983d6d34ad3bac2921509f612f, type: 2}
+  - {fileID: 11400000, guid: c17ae0ce755f04419b700825b20fd386, type: 2}
   - {fileID: 11400000, guid: ac09abff5d8bc48bbabd08bde820b58b, type: 2}
   - {fileID: 11400000, guid: 3bf339b994c544db3860ddf0a0dc8e20, type: 2}
   - {fileID: 11400000, guid: e92d94924be504167a342e42e1162f21, type: 2}
diff --git a/Demo/API_V2/Assets/API/Facility/Screen/ScreenSO.asset b/Demo/API_V2/Assets/API/Facility/Screen/ScreenSO.asset
index 545604476..b7bb2dc9e 100644
--- a/Demo/API_V2/Assets/API/Facility/Screen/ScreenSO.asset
+++ b/Demo/API_V2/Assets/API/Facility/Screen/ScreenSO.asset
@@ -26,3 +26,4 @@ MonoBehaviour:
   - buttonText: "\u67E5\u8BE2\u7528\u6237\u662F\u5426\u5728\u5F55\u5C4F"
   - buttonText: "\u83B7\u53D6\u5C4F\u5E55\u4EAE\u5EA6"
   initialResultList: []
+  entryOrder: 0
diff --git a/Demo/API_V2/Assets/API/FileSystem/FileSystemSO.asset b/Demo/API_V2/Assets/API/FileSystem/FileSystemSO.asset
index 2b8fc9628..b711979f0 100644
--- a/Demo/API_V2/Assets/API/FileSystem/FileSystemSO.asset
+++ b/Demo/API_V2/Assets/API/FileSystem/FileSystemSO.asset
@@ -24,8 +24,8 @@ MonoBehaviour:
   - {fileID: 11400000, guid: 65ab1b01a722b4542a14fcf9decca3de, type: 2}
   - {fileID: 11400000, guid: 19b80cb144f0c4ea28a4ddca7a2c2f09, type: 2}
   - {fileID: 11400000, guid: 0aa5d76237c844275add1612c47bddaa, type: 2}
-  - {fileID: 11400000, guid: 73c05fc1ffae94ec1b69a00ee261d529, type: 2}
   - {fileID: 11400000, guid: 65a826f5f949544d8990e673231bb80f, type: 2}
+  - {fileID: 11400000, guid: 73c05fc1ffae94ec1b69a00ee261d529, type: 2}
   - {fileID: 11400000, guid: 3a901e80b59ad4aafbe373ee6a8df2d8, type: 2}
   - {fileID: 11400000, guid: e7ea0be62dc6543b0a8dc629489c5e7e, type: 2}
   categoryOrder: 11
diff --git a/Demo/API_V2/Assets/API/Media/VideoDecoder/VideoDecoderSO.asset b/Demo/API_V2/Assets/API/Media/VideoDecoder/VideoDecoderSO.asset
index 4f78149ae..08a737135 100644
--- a/Demo/API_V2/Assets/API/Media/VideoDecoder/VideoDecoderSO.asset
+++ b/Demo/API_V2/Assets/API/Media/VideoDecoder/VideoDecoderSO.asset
@@ -23,3 +23,4 @@ MonoBehaviour:
   - buttonText: "\u8DF3\u8F6C"
   - buttonText: "\u83B7\u5F97\u4E0B\u4E00\u5E27"
   initialResultList: []
+  entryOrder: 0
diff --git a/Demo/API_V2/Assets/API/Render/RenderSO.asset b/Demo/API_V2/Assets/API/Render/RenderSO.asset
index 4c2494aab..bff64941e 100644
--- a/Demo/API_V2/Assets/API/Render/RenderSO.asset
+++ b/Demo/API_V2/Assets/API/Render/RenderSO.asset
@@ -17,4 +17,5 @@ MonoBehaviour:
   entryList:
   - {fileID: 11400000, guid: 3742edf3f50854504ba8632134064e94, type: 2}
   - {fileID: 11400000, guid: c185ac653050d49608ea734a26e8dbaa, type: 2}
+  - {fileID: 11400000, guid: f9a70ffa3b7f4db40b550f6b153c4ed2, type: 2}
   categoryOrder: 8
diff --git a/Demo/API_V2/Assets/API/Render/ToTempFilePath.meta b/Demo/API_V2/Assets/API/Render/ToTempFilePath.meta
new file mode 100644
index 000000000..18e8f1756
--- /dev/null
+++ b/Demo/API_V2/Assets/API/Render/ToTempFilePath.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5784973ccf99f484198e8dd2b5f8a886
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePath.cs b/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePath.cs
new file mode 100644
index 000000000..60862b628
--- /dev/null
+++ b/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePath.cs
@@ -0,0 +1,140 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using WeChatWASM;
+using LitJson;
+
+public class ToTempFilePath : Details
+{
+    protected override void TestAPI(string[] args)
+    {
+        if (args[0] == "同步执行")
+        {
+            LoadCanvasToTempFilePathSync();
+        }
+        else
+        {
+            LoadCanvasToTempFilePath();
+        }
+    }
+
+    // 异步
+    private void LoadCanvasToTempFilePath()
+    {// 根据options数组的索引获取值
+        float x = GetOptionValue(1);
+        float y = GetOptionValue(2);
+        float width = GetOptionValue(3);
+        float height = GetOptionValue(4);
+        float destWidth = GetOptionValue(5);
+        float destHeight = GetOptionValue(6);
+        string fileType = GetOptionString(7, "png");
+        float quality = GetOptionValue(8);
+
+        string optionsInfo = $"当前参数值:\nx={x}\ny={y}\nwidth={width}\nheight={height}\ndestWidth={destWidth}\ndestHeight={destHeight}\nfileType={fileType}\nquality={quality}";
+
+        WXCanvas.ToTempFilePath(new WXToTempFilePathParam()
+        {
+            x = (int)x,
+            y = (int)y,
+            width = (int)width,
+            height = (int)height,
+            destWidth = (int)destWidth,
+            destHeight = (int)destHeight,
+            fileType = fileType,
+            quality = (int)quality,
+
+            success = (result) =>
+            {
+                WX.ShowModal(new ShowModalOption()
+                {
+                    title = "截图成功(异步)",
+                    content = $"{optionsInfo}\n\n临时文件路径:\n{result.tempFilePath}",
+                    showCancel = false,
+                    confirmText = "展示截图",
+                    success = (res) =>
+                    {
+                        WX.PreviewMedia(new PreviewMediaOption()
+                        {
+                            sources = new[] { new MediaSource { url = result.tempFilePath, type = "image" } },
+                            current = 0,
+                            success = (res) =>
+                            {
+                                Debug.Log("预览成功");
+                            },
+                            fail = (res) =>
+                            {
+                                Debug.Log("预览失败");
+                            }
+                        });
+                    }
+                });
+            },
+            fail = (result) =>
+            {
+                WX.ShowModal(new ShowModalOption()
+                {
+                    title = "截图失败",
+                    content = JsonUtility.ToJson(result),
+                    showCancel = false
+                });
+            },
+            complete = (result) =>
+            {
+                Debug.Log("complete");
+            },
+        });
+    }
+
+    // 同步
+    private void LoadCanvasToTempFilePathSync()
+    {
+
+        // 根据options数组的索引获取值
+        float x = GetOptionValue(1);
+        float y = GetOptionValue(2);
+        float width = GetOptionValue(3);
+        float height = GetOptionValue(4);
+        float destWidth = GetOptionValue(5);
+        float destHeight = GetOptionValue(6);
+        string fileType = GetOptionString(7, "png");
+        float quality = GetOptionValue(8);
+
+        string optionsInfo = $"当前参数值:\nx={x}\ny={y}\nwidth={width}\nheight={height}\ndestWidth={destWidth}\ndestHeight={destHeight}\nfileType={fileType}\nquality={quality}";
+
+        var tempFilePath = WXCanvas.ToTempFilePathSync(new WXToTempFilePathSyncParam()
+        {
+            x = (int)x,
+            y = (int)y,
+            width = (int)width,
+            height = (int)height,
+            destWidth = (int)destWidth,
+            destHeight = (int)destHeight,
+            fileType = fileType,
+            quality = (int)quality,
+        });
+        // 显示同步访问的结果
+        WX.ShowModal(new ShowModalOption()
+        {
+            title = "截图成功(同步)",
+            content = $"{optionsInfo}\n\n临时文件路径:\n{tempFilePath}",
+            showCancel = false,
+            confirmText = "展示截图",
+            success = (res) =>
+            {
+                WX.PreviewMedia(new PreviewMediaOption()
+                {
+                    sources = new[] { new MediaSource { url = tempFilePath, type = "image" } },
+                    current = 0,
+                    success = (res) =>
+                    {
+                        Debug.Log("预览成功");
+                    },
+                    fail = (res) =>
+                    {
+                        Debug.Log("预览失败");
+                    }
+                });
+            }
+        });
+    }
+}
\ No newline at end of file
diff --git a/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePath.cs.meta b/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePath.cs.meta
new file mode 100644
index 000000000..7f5ef866f
--- /dev/null
+++ b/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePath.cs.meta
@@ -0,0 +1,13 @@
+fileFormatVersion: 2
+guid: e3b0e3d464c03264fa2ea04cea1803a0
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences:
+  - entrySO: {fileID: 11400000, guid: f9a70ffa3b7f4db40b550f6b153c4ed2, type: 2}
+  - toTempFilePathSO: {instanceID: 0}
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePathSO.asset b/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePathSO.asset
new file mode 100644
index 000000000..cdd131a5e
--- /dev/null
+++ b/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePathSO.asset
@@ -0,0 +1,58 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fb48e4613a53bb941a20036d7c08fefb, type: 3}
+  m_Name: ToTempFilePathSO
+  m_EditorClassIdentifier: 
+  entryScriptTypeName: ToTempFilePath
+  entryName: "\u622A\u5C4F"
+  entryAPI: Canvas.toTempFilePath
+  entryDescription: "\u5C06\u5F53\u524D Canvas \u4FDD\u5B58\u4E3A\u4E00\u4E2A\u4E34\u65F6\u6587\u4EF6\u3002"
+  optionList:
+  - optionName: "\u6267\u884C\u65B9\u5F0F"
+    availableOptions:
+    - "\u540C\u6B65\u6267\u884C"
+    - "\u5F02\u6B65\u6267\u884C"
+  - optionName: x
+    availableOptions:
+    - 0
+    - 500
+  - optionName: y
+    availableOptions:
+    - 0
+    - 500
+  - optionName: width
+    availableOptions:
+    - 0
+    - 400
+  - optionName: height
+    availableOptions:
+    - 0
+    - 800
+  - optionName: destWidth
+    availableOptions:
+    - 0
+    - 800
+  - optionName: destHeight
+    availableOptions:
+    - 0
+    - 800
+  - optionName: fileType
+    availableOptions:
+    - png
+    - jpg
+  - optionName: quality
+    availableOptions:
+    - 1.0
+  initialButtonText: "\u8FD0\u884C\u622A\u56FE"
+  extraButtonList: []
+  initialResultList: []
+  entryOrder: 0
diff --git a/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePathSO.asset.meta b/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePathSO.asset.meta
new file mode 100644
index 000000000..5356308c3
--- /dev/null
+++ b/Demo/API_V2/Assets/API/Render/ToTempFilePath/ToTempFilePathSO.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f9a70ffa3b7f4db40b550f6b153c4ed2
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Demo/API_V2/Assets/API/Report/ReportEvent/ReportEventSO.asset b/Demo/API_V2/Assets/API/Report/ReportEvent/ReportEventSO.asset
index 717e45b70..d32d367fc 100644
--- a/Demo/API_V2/Assets/API/Report/ReportEvent/ReportEventSO.asset
+++ b/Demo/API_V2/Assets/API/Report/ReportEvent/ReportEventSO.asset
@@ -28,3 +28,4 @@ MonoBehaviour:
   initialButtonText: "\u4E8B\u4EF6\u4E0A\u62A5"
   extraButtonList: []
   initialResultList: []
+  entryOrder: 0
diff --git a/Demo/API_V2/Assets/API/Share/ShareEvent/ShareEventSO.asset b/Demo/API_V2/Assets/API/Share/ShareEvent/ShareEventSO.asset
index 02a01eee4..e8e3af244 100644
--- a/Demo/API_V2/Assets/API/Share/ShareEvent/ShareEventSO.asset
+++ b/Demo/API_V2/Assets/API/Share/ShareEvent/ShareEventSO.asset
@@ -28,3 +28,4 @@ MonoBehaviour:
   - buttonText: "\u76D1\u542Csharetofriend"
   - buttonText: "\u76D1\u542C\u53F3\u4E0A\u89D2\u83DC\u5355\u7684\u8F6C\u53D1"
   initialResultList: []
+  entryOrder: 0
diff --git a/Demo/API_V2/Assets/API/Share/ShareEvent2/ShareEvent2SO.asset b/Demo/API_V2/Assets/API/Share/ShareEvent2/ShareEvent2SO.asset
index d4f27195d..c47c6e5ef 100644
--- a/Demo/API_V2/Assets/API/Share/ShareEvent2/ShareEvent2SO.asset
+++ b/Demo/API_V2/Assets/API/Share/ShareEvent2/ShareEvent2SO.asset
@@ -24,3 +24,4 @@ MonoBehaviour:
   - buttonText: "\u83B7\u53D6\u8F6C\u53D1\u8BE6\u7EC6\u4FE1\u606F"
   - buttonText: "\u9A8C\u8BC1\u79C1\u5BC6\u6D88\u606F"
   initialResultList: []
+  entryOrder: 0
diff --git a/Demo/API_V2/Assets/Scenes/MainScene.unity b/Demo/API_V2/Assets/Scenes/MainScene.unity
index 53e3130f1..adfe5d81c 100644
--- a/Demo/API_V2/Assets/Scenes/MainScene.unity
+++ b/Demo/API_V2/Assets/Scenes/MainScene.unity
@@ -38,7 +38,7 @@ RenderSettings:
   m_ReflectionIntensity: 1
   m_CustomReflection: {fileID: 0}
   m_Sun: {fileID: 170076734}
-  m_IndirectSpecularColor: {r: 0.4465788, g: 0.49641275, b: 0.5748176, a: 1}
+  m_IndirectSpecularColor: {r: 0.44657826, g: 0.49641263, b: 0.57481676, a: 1}
   m_UseRadianceAmbientProbe: 0
 --- !u!157 &3
 LightmapSettings:
@@ -3663,6 +3663,81 @@ MonoBehaviour:
   m_FlexibleWidth: -1
   m_FlexibleHeight: 1
   m_LayoutPriority: 1
+--- !u!1 &220669354
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 220669355}
+  - component: {fileID: 220669357}
+  - component: {fileID: 220669356}
+  m_Layer: 5
+  m_Name: Arrow
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &220669355
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 220669354}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 0.7, y: 0.7, z: 0.7}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 848500029}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 1, y: 0.5}
+  m_AnchorMax: {x: 1, y: 0.5}
+  m_AnchoredPosition: {x: -25, y: 0}
+  m_SizeDelta: {x: 72, y: 72}
+  m_Pivot: {x: 1, y: 0.5}
+--- !u!114 &220669356
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 220669354}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 21300000, guid: b1a5e6c3cca1748e0a56f2485c899ceb, type: 3}
+  m_Type: 0
+  m_PreserveAspect: 0
+  m_FillCenter: 1
+  m_FillMethod: 4
+  m_FillAmount: 1
+  m_FillClockwise: 1
+  m_FillOrigin: 0
+  m_UseSpriteMesh: 0
+  m_PixelsPerUnitMultiplier: 1
+--- !u!222 &220669357
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 220669354}
+  m_CullTransparentMesh: 0
 --- !u!1 &221763189
 GameObject:
   m_ObjectHideFlags: 0
@@ -14845,6 +14920,7 @@ RectTransform:
   m_Children:
   - {fileID: 1859644481}
   - {fileID: 374767485}
+  - {fileID: 848500029}
   m_Father: {fileID: 257581116}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
   m_AnchorMin: {x: 0, y: 1}
@@ -17823,6 +17899,165 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 836805604}
   m_CullTransparentMesh: 0
+--- !u!1 &848500028
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 848500029}
+  - component: {fileID: 848500034}
+  - component: {fileID: 848500033}
+  - component: {fileID: 848500032}
+  - component: {fileID: 848500031}
+  - component: {fileID: 848500030}
+  m_Layer: 5
+  m_Name: "\u622A\u5C4F"
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &848500029
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 848500028}
+  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_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 984832399}
+  - {fileID: 220669355}
+  - {fileID: 1309008208}
+  m_Father: {fileID: 692947279}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 1}
+  m_AnchorMax: {x: 0, y: 1}
+  m_AnchoredPosition: {x: 500, y: -80}
+  m_SizeDelta: {x: 1000, y: 160}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &848500030
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 848500028}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Navigation:
+    m_Mode: 3
+    m_WrapAround: 0
+    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: 1, g: 1, b: 1, a: 1}
+    m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+    m_SelectedColor: {r: 1, g: 1, b: 1, 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_SelectedSprite: {fileID: 0}
+    m_DisabledSprite: {fileID: 0}
+  m_AnimationTriggers:
+    m_NormalTrigger: Normal
+    m_HighlightedTrigger: Highlighted
+    m_PressedTrigger: Pressed
+    m_SelectedTrigger: Highlighted
+    m_DisabledTrigger: Disabled
+  m_Interactable: 1
+  m_TargetGraphic: {fileID: 848500033}
+  m_OnClick:
+    m_PersistentCalls:
+      m_Calls: []
+--- !u!114 &848500031
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 848500028}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 36afc0df23af49b5a395bf8d010e7c03, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  entrySO: {fileID: 11400000, guid: f9a70ffa3b7f4db40b550f6b153c4ed2, type: 2}
+  entryNameText: {fileID: 984832401}
+--- !u!114 &848500032
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 848500028}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_IgnoreLayout: 0
+  m_MinWidth: -1
+  m_MinHeight: -1
+  m_PreferredWidth: -1
+  m_PreferredHeight: 160
+  m_FlexibleWidth: 1
+  m_FlexibleHeight: -1
+  m_LayoutPriority: 1
+--- !u!114 &848500033
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 848500028}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 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
+  m_PixelsPerUnitMultiplier: 1
+--- !u!222 &848500034
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 848500028}
+  m_CullTransparentMesh: 0
 --- !u!1 &850122570
 GameObject:
   m_ObjectHideFlags: 0
@@ -20620,6 +20855,98 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 981974621}
   m_CullTransparentMesh: 0
+--- !u!1 &984832398
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 984832399}
+  - component: {fileID: 984832402}
+  - component: {fileID: 984832401}
+  - component: {fileID: 984832400}
+  m_Layer: 5
+  m_Name: Text
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &984832399
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 984832398}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 848500029}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 1}
+  m_AnchoredPosition: {x: -40, y: 0}
+  m_SizeDelta: {x: -160, y: -90}
+  m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &984832400
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 984832398}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: ad114bb7e387d46d7a9ad7af676060d0, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!114 &984832401
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 984832398}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0, g: 0, b: 0, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_FontData:
+    m_Font: {fileID: 12800000, guid: 04a37534e45184b62bc44e172e5fe81e, type: 3}
+    m_FontSize: 45
+    m_FontStyle: 0
+    m_BestFit: 0
+    m_MinSize: 0
+    m_MaxSize: 230
+    m_Alignment: 3
+    m_AlignByGeometry: 1
+    m_RichText: 0
+    m_HorizontalOverflow: 0
+    m_VerticalOverflow: 0
+    m_LineSpacing: 1
+  m_Text: ToTempFilePath
+--- !u!222 &984832402
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 984832398}
+  m_CullTransparentMesh: 0
 --- !u!1 &988139527
 GameObject:
   m_ObjectHideFlags: 0
@@ -27197,6 +27524,81 @@ MonoBehaviour:
   m_ChildScaleWidth: 0
   m_ChildScaleHeight: 0
   m_ReverseArrangement: 0
+--- !u!1 &1309008207
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1309008208}
+  - component: {fileID: 1309008210}
+  - component: {fileID: 1309008209}
+  m_Layer: 5
+  m_Name: Line
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!224 &1309008208
+RectTransform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1309008207}
+  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_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 848500029}
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+  m_AnchorMin: {x: 0, y: 0}
+  m_AnchorMax: {x: 1, y: 0}
+  m_AnchoredPosition: {x: 0, y: 0}
+  m_SizeDelta: {x: -50, y: 2}
+  m_Pivot: {x: 0.5, y: 0}
+--- !u!114 &1309008209
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1309008207}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  m_Material: {fileID: 0}
+  m_Color: {r: 0.9333334, g: 0.9333334, b: 0.9333334, a: 1}
+  m_RaycastTarget: 1
+  m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+  m_Maskable: 1
+  m_OnCullStateChanged:
+    m_PersistentCalls:
+      m_Calls: []
+  m_Sprite: {fileID: 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
+  m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1309008210
+CanvasRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1309008207}
+  m_CullTransparentMesh: 0
 --- !u!1 &1311586224
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Demo/API_V2/Assets/Scripts/Details.cs b/Demo/API_V2/Assets/Scripts/Details.cs
index de5bf294a..9e9e2c9b4 100644
--- a/Demo/API_V2/Assets/Scripts/Details.cs
+++ b/Demo/API_V2/Assets/Scripts/Details.cs
@@ -34,4 +34,40 @@ public void Run()
 
     // 抽象方法,由子类实现具体的测试 API 逻辑
     protected abstract void TestAPI(string[] args);
+
+    protected float GetOptionValue(int optionIndex, float defaultValue = 0f)
+    {
+        if (options != null && optionIndex < options.Length)
+        {
+            if (float.TryParse(options[optionIndex], out float value))
+            {
+                return value;
+            }
+        }
+        return defaultValue;
+    }
+    //获得选项String类型值
+    protected string GetOptionString(int optionIndex, string defaultValue = "")
+    {
+        if (options != null && optionIndex < options.Length)
+        {
+            return options[optionIndex];
+        }
+        return defaultValue;
+    }
+    // 打印当前选项的值
+    protected void LogCurrentOptions()
+    {
+        if (options != null)
+        {
+            for (int i = 0; i < options.Length; i++)
+            {
+                Debug.Log($"Option {i}: {options[i]}");
+            }
+        }
+        else
+        {
+            Debug.Log("Options array is null");
+        }
+    }
 }