Skip to content

Commit 557163d

Browse files
committed
Add example of returning string for unity-to-react communication
1 parent 2bfa083 commit 557163d

File tree

7 files changed

+238
-2
lines changed

7 files changed

+238
-2
lines changed

testing/project/Assets/Controller.cs

+7
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ class Controller : MonoBehaviour {
99
[DllImport ("__Internal")] static extern void ClickedNumbersTestButton (int[] values, int length);
1010
[DllImport ("__Internal")] static extern void ClickedBoolTestButton (bool value);
1111
[DllImport ("__Internal")] static extern void ClickedObjectTestButton (string stringValue, int intValue, bool boolValue);
12+
[DllImport ("__Internal")] static extern string ClickedTestButtonReturnString ();
1213

1314
public Text textLog;
1415

@@ -49,6 +50,12 @@ public void DispatchObjectEvent () {
4950
#endif
5051
}
5152

53+
public void DispatchEventReturnString () {
54+
#if !UNITY_EDITOR && UNITY_WEBGL
55+
SetLogText(ClickedTestButtonReturnString());
56+
#endif
57+
}
58+
5259
void SetLogText (string text) {
5360
textLog.text = text;
5461
}

testing/project/Assets/Main.unity

+215
Original file line numberDiff line numberDiff line change
@@ -725,6 +725,7 @@ RectTransform:
725725
- {fileID: 938036806}
726726
- {fileID: 1191530762}
727727
- {fileID: 1968377178}
728+
- {fileID: 1774420044}
728729
m_Father: {fileID: 2053015781}
729730
m_RootOrder: -1
730731
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -1336,6 +1337,220 @@ CanvasRenderer:
13361337
m_PrefabAsset: {fileID: 0}
13371338
m_GameObject: {fileID: 1561554039}
13381339
m_CullTransparentMesh: 0
1340+
--- !u!1 &1774420043
1341+
GameObject:
1342+
m_ObjectHideFlags: 0
1343+
m_CorrespondingSourceObject: {fileID: 0}
1344+
m_PrefabInstance: {fileID: 0}
1345+
m_PrefabAsset: {fileID: 0}
1346+
serializedVersion: 6
1347+
m_Component:
1348+
- component: {fileID: 1774420044}
1349+
- component: {fileID: 1774420047}
1350+
- component: {fileID: 1774420046}
1351+
- component: {fileID: 1774420045}
1352+
m_Layer: 5
1353+
m_Name: DispatchEventButton
1354+
m_TagString: Untagged
1355+
m_Icon: {fileID: 0}
1356+
m_NavMeshLayer: 0
1357+
m_StaticEditorFlags: 0
1358+
m_IsActive: 1
1359+
--- !u!224 &1774420044
1360+
RectTransform:
1361+
m_ObjectHideFlags: 0
1362+
m_CorrespondingSourceObject: {fileID: 0}
1363+
m_PrefabInstance: {fileID: 0}
1364+
m_PrefabAsset: {fileID: 0}
1365+
m_GameObject: {fileID: 1774420043}
1366+
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
1367+
m_LocalPosition: {x: 0, y: 0, z: 0}
1368+
m_LocalScale: {x: 1, y: 1, z: 1}
1369+
m_ConstrainProportionsScale: 0
1370+
m_Children:
1371+
- {fileID: 1925683366}
1372+
m_Father: {fileID: 1061584829}
1373+
m_RootOrder: -1
1374+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
1375+
m_AnchorMin: {x: 0, y: 0}
1376+
m_AnchorMax: {x: 0, y: 0}
1377+
m_AnchoredPosition: {x: 0, y: 0}
1378+
m_SizeDelta: {x: 0, y: 40}
1379+
m_Pivot: {x: 0, y: 1}
1380+
--- !u!114 &1774420045
1381+
MonoBehaviour:
1382+
m_ObjectHideFlags: 0
1383+
m_CorrespondingSourceObject: {fileID: 0}
1384+
m_PrefabInstance: {fileID: 0}
1385+
m_PrefabAsset: {fileID: 0}
1386+
m_GameObject: {fileID: 1774420043}
1387+
m_Enabled: 1
1388+
m_EditorHideFlags: 0
1389+
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
1390+
m_Name:
1391+
m_EditorClassIdentifier:
1392+
m_Navigation:
1393+
m_Mode: 3
1394+
m_WrapAround: 0
1395+
m_SelectOnUp: {fileID: 0}
1396+
m_SelectOnDown: {fileID: 0}
1397+
m_SelectOnLeft: {fileID: 0}
1398+
m_SelectOnRight: {fileID: 0}
1399+
m_Transition: 1
1400+
m_Colors:
1401+
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
1402+
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
1403+
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
1404+
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
1405+
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
1406+
m_ColorMultiplier: 1
1407+
m_FadeDuration: 0.1
1408+
m_SpriteState:
1409+
m_HighlightedSprite: {fileID: 0}
1410+
m_PressedSprite: {fileID: 0}
1411+
m_SelectedSprite: {fileID: 0}
1412+
m_DisabledSprite: {fileID: 0}
1413+
m_AnimationTriggers:
1414+
m_NormalTrigger: Normal
1415+
m_HighlightedTrigger: Highlighted
1416+
m_PressedTrigger: Pressed
1417+
m_SelectedTrigger: Highlighted
1418+
m_DisabledTrigger: Disabled
1419+
m_Interactable: 1
1420+
m_TargetGraphic: {fileID: 1774420046}
1421+
m_OnClick:
1422+
m_PersistentCalls:
1423+
m_Calls:
1424+
- m_Target: {fileID: 84545479}
1425+
m_TargetAssemblyTypeName: Controller, Assembly-CSharp
1426+
m_MethodName: DispatchEventReturnString
1427+
m_Mode: 1
1428+
m_Arguments:
1429+
m_ObjectArgument: {fileID: 0}
1430+
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
1431+
m_IntArgument: 0
1432+
m_FloatArgument: 0
1433+
m_StringArgument:
1434+
m_BoolArgument: 0
1435+
m_CallState: 2
1436+
--- !u!114 &1774420046
1437+
MonoBehaviour:
1438+
m_ObjectHideFlags: 0
1439+
m_CorrespondingSourceObject: {fileID: 0}
1440+
m_PrefabInstance: {fileID: 0}
1441+
m_PrefabAsset: {fileID: 0}
1442+
m_GameObject: {fileID: 1774420043}
1443+
m_Enabled: 1
1444+
m_EditorHideFlags: 0
1445+
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
1446+
m_Name:
1447+
m_EditorClassIdentifier:
1448+
m_Material: {fileID: 0}
1449+
m_Color: {r: 1, g: 1, b: 1, a: 1}
1450+
m_RaycastTarget: 1
1451+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
1452+
m_Maskable: 1
1453+
m_OnCullStateChanged:
1454+
m_PersistentCalls:
1455+
m_Calls: []
1456+
m_Sprite: {fileID: 0}
1457+
m_Type: 1
1458+
m_PreserveAspect: 0
1459+
m_FillCenter: 1
1460+
m_FillMethod: 4
1461+
m_FillAmount: 1
1462+
m_FillClockwise: 1
1463+
m_FillOrigin: 0
1464+
m_UseSpriteMesh: 0
1465+
m_PixelsPerUnitMultiplier: 1
1466+
--- !u!222 &1774420047
1467+
CanvasRenderer:
1468+
m_ObjectHideFlags: 0
1469+
m_CorrespondingSourceObject: {fileID: 0}
1470+
m_PrefabInstance: {fileID: 0}
1471+
m_PrefabAsset: {fileID: 0}
1472+
m_GameObject: {fileID: 1774420043}
1473+
m_CullTransparentMesh: 0
1474+
--- !u!1 &1925683365
1475+
GameObject:
1476+
m_ObjectHideFlags: 0
1477+
m_CorrespondingSourceObject: {fileID: 0}
1478+
m_PrefabInstance: {fileID: 0}
1479+
m_PrefabAsset: {fileID: 0}
1480+
serializedVersion: 6
1481+
m_Component:
1482+
- component: {fileID: 1925683366}
1483+
- component: {fileID: 1925683368}
1484+
- component: {fileID: 1925683367}
1485+
m_Layer: 5
1486+
m_Name: ButtonText
1487+
m_TagString: Untagged
1488+
m_Icon: {fileID: 0}
1489+
m_NavMeshLayer: 0
1490+
m_StaticEditorFlags: 0
1491+
m_IsActive: 1
1492+
--- !u!224 &1925683366
1493+
RectTransform:
1494+
m_ObjectHideFlags: 0
1495+
m_CorrespondingSourceObject: {fileID: 0}
1496+
m_PrefabInstance: {fileID: 0}
1497+
m_PrefabAsset: {fileID: 0}
1498+
m_GameObject: {fileID: 1925683365}
1499+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
1500+
m_LocalPosition: {x: 0, y: 0, z: 0}
1501+
m_LocalScale: {x: 1, y: 1, z: 1}
1502+
m_ConstrainProportionsScale: 0
1503+
m_Children: []
1504+
m_Father: {fileID: 1774420044}
1505+
m_RootOrder: 0
1506+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
1507+
m_AnchorMin: {x: 0, y: 0}
1508+
m_AnchorMax: {x: 1, y: 1}
1509+
m_AnchoredPosition: {x: 0, y: 0}
1510+
m_SizeDelta: {x: 0, y: 0}
1511+
m_Pivot: {x: 0.5, y: 0.5}
1512+
--- !u!114 &1925683367
1513+
MonoBehaviour:
1514+
m_ObjectHideFlags: 0
1515+
m_CorrespondingSourceObject: {fileID: 0}
1516+
m_PrefabInstance: {fileID: 0}
1517+
m_PrefabAsset: {fileID: 0}
1518+
m_GameObject: {fileID: 1925683365}
1519+
m_Enabled: 1
1520+
m_EditorHideFlags: 0
1521+
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
1522+
m_Name:
1523+
m_EditorClassIdentifier:
1524+
m_Material: {fileID: 0}
1525+
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
1526+
m_RaycastTarget: 1
1527+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
1528+
m_Maskable: 1
1529+
m_OnCullStateChanged:
1530+
m_PersistentCalls:
1531+
m_Calls: []
1532+
m_FontData:
1533+
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
1534+
m_FontSize: 16
1535+
m_FontStyle: 0
1536+
m_BestFit: 0
1537+
m_MinSize: 1
1538+
m_MaxSize: 40
1539+
m_Alignment: 4
1540+
m_AlignByGeometry: 0
1541+
m_RichText: 1
1542+
m_HorizontalOverflow: 0
1543+
m_VerticalOverflow: 0
1544+
m_LineSpacing: 1
1545+
m_Text: Dispatch Event return String
1546+
--- !u!222 &1925683368
1547+
CanvasRenderer:
1548+
m_ObjectHideFlags: 0
1549+
m_CorrespondingSourceObject: {fileID: 0}
1550+
m_PrefabInstance: {fileID: 0}
1551+
m_PrefabAsset: {fileID: 0}
1552+
m_GameObject: {fileID: 1925683365}
1553+
m_CullTransparentMesh: 0
13391554
--- !u!1 &1968377177
13401555
GameObject:
13411556
m_ObjectHideFlags: 0

testing/project/Assets/Plugins/WebGL/Bridge.jslib

+8-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
mergeInto(LibraryManager.library, {
1+
mergeInto(LibraryManager.library, {
22
ClickedTestButton: function () {
33
dispatchReactUnityEvent("ClickedTestButton");
44
},
@@ -25,4 +25,11 @@
2525
boolValue: boolValue === 1,
2626
});
2727
},
28+
ClickedTestButtonReturnString: function () {
29+
var returnStr = dispatchReactUnityEvent("ClickedTestButtonReturnString");
30+
var bufferSize = lengthBytesUTF8(returnStr) + 1;
31+
var buffer = _malloc(bufferSize);
32+
stringToUTF8(returnStr, buffer, bufferSize);
33+
return buffer;
34+
},
2835
});
319 Bytes
Binary file not shown.

testing/public/unity-build/communication-tests.framework.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Binary file not shown.

testing/src/unity-test.tsx

+7
Original file line numberDiff line numberDiff line change
@@ -84,19 +84,26 @@ function UnityTest() {
8484
console.log({ parameters });
8585
}
8686

87+
function logParametersToConsoleWithReturn(...parameters: any[]) {
88+
logParametersToConsole({ parameters });
89+
return "String from React App";
90+
}
91+
8792
addEventListener("ClickedTestButton", logParametersToConsole);
8893
addEventListener("ClickedStringTestButton", logParametersToConsole);
8994
addEventListener("ClickedNumberTestButton", logParametersToConsole);
9095
addEventListener("ClickedNumbersTestButton", logParametersToConsole);
9196
addEventListener("ClickedBoolTestButton", logParametersToConsole);
9297
addEventListener("ClickedObjectTestButton", logParametersToConsole);
98+
addEventListener("ClickedTestButtonReturnString", logParametersToConsoleWithReturn);
9399
return () => {
94100
removeEventListener("ClickedTestButton", logParametersToConsole);
95101
removeEventListener("ClickedStringTestButton", logParametersToConsole);
96102
removeEventListener("ClickedNumberTestButton", logParametersToConsole);
97103
removeEventListener("ClickedNumbersTestButton", logParametersToConsole);
98104
removeEventListener("ClickedBoolTestButton", logParametersToConsole);
99105
removeEventListener("ClickedObjectTestButton", logParametersToConsole);
106+
removeEventListener("ClickedTestButtonReturnString", logParametersToConsoleWithReturn);
100107
};
101108
}, [addEventListener, removeEventListener]);
102109

0 commit comments

Comments
 (0)