Skip to content

Commit

Permalink
Merge pull request #140 from kou-yeung/feature/ui_tool_20240512
Browse files Browse the repository at this point in the history
Experimental:support uitoolkit
  • Loading branch information
kou-yeung authored May 12, 2024
2 parents c6febb3 + 347912f commit 6f1cd4e
Show file tree
Hide file tree
Showing 29 changed files with 693 additions and 137 deletions.
12 changes: 12 additions & 0 deletions Assets/Sample.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.UIElements;
using WebGLSupport;


public class Sample : MonoBehaviour
{
[SerializeField] UIDocument uiDocument;

public void Start()
{
uiDocument.rootVisualElement.Query<TextField>().ForEach(v =>
{
v.AddManipulator(new WebGLInputManipulator());
}); ;

}

public void OnValueChange(InputField o)
{
Debug.Log(string.Format("Sample:OnValueChange[{1}] ({0})", o.text, o.name));
Expand Down
57 changes: 54 additions & 3 deletions Assets/Scenes/SampleScene.unity
Original file line number Diff line number Diff line change
Expand Up @@ -1500,6 +1500,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: e7b65eb28cdc6bb44bf45aeaba1146ca, type: 3}
m_Name:
m_EditorClassIdentifier:
uiDocument: {fileID: 1957403019}
--- !u!4 &624294021
Transform:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -1553,7 +1554,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: -30, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 34, y: 271}
m_AnchoredPosition: {x: 34, y: 247.17}
m_SizeDelta: {x: 249.9, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &702547720
Expand Down Expand Up @@ -4350,6 +4351,55 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1925124777}
m_CullTransparentMesh: 0
--- !u!1 &1957403018
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1957403020}
- component: {fileID: 1957403019}
m_Layer: 0
m_Name: UIDocument
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1957403019
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1957403018}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
m_Name:
m_EditorClassIdentifier:
m_PanelSettings: {fileID: 11400000, guid: 46525ae93b53540469da5b6f766e93bc, type: 2}
m_ParentUI: {fileID: 0}
sourceAsset: {fileID: 9197481963319205126, guid: fd713ff242a072842a2cc05ba67b2e6c,
type: 3}
m_SortingOrder: 0
--- !u!4 &1957403020
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1957403018}
serializedVersion: 2
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: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1976214885
GameObject:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -4592,7 +4642,7 @@ MonoBehaviour:
m_FallbackScreenDPI: 96
m_DefaultSpriteDPI: 96
m_DynamicPixelsPerUnit: 1
m_PresetInfoIsWorld: 0
m_PresetInfoIsWorld: 1
--- !u!223 &2055003929
Canvas:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -4633,7 +4683,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: -1833, y: 219}
m_AnchoredPosition: {x: -1833, y: 250}
m_SizeDelta: {x: 960, y: 600}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &2084303610
Expand Down Expand Up @@ -4726,3 +4776,4 @@ SceneRoots:
- {fileID: 624294021}
- {fileID: 2055003930}
- {fileID: 611509715}
- {fileID: 1957403020}
8 changes: 8 additions & 0 deletions Assets/UI Toolkit.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions Assets/UI Toolkit/UnityThemes.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Assets/UI Toolkit/UnityThemes/UnityDefaultRuntimeTheme.tss
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@import url("unity-theme://default");
11 changes: 11 additions & 0 deletions Assets/UI Toolkit/UnityThemes/UnityDefaultRuntimeTheme.tss.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

44 changes: 44 additions & 0 deletions Assets/UI Toolkit/sample.asset
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
%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: 19101, guid: 0000000000000000e000000000000000, type: 0}
m_Name: sample
m_EditorClassIdentifier:
themeUss: {fileID: -4733365628477956816, guid: 3d798a9891369254dae4ec1c2a28fcf6,
type: 3}
m_TargetTexture: {fileID: 0}
m_RenderMode: 0
m_WorldSpaceLayer: 0
m_ScaleMode: 1
m_ReferenceSpritePixelsPerUnit: 100
m_PixelsPerUnit: 100
m_Scale: 1
m_ReferenceDpi: 96
m_FallbackDpi: 96
m_ReferenceResolution: {x: 1200, y: 800}
m_ScreenMatchMode: 0
m_Match: 0
m_SortingOrder: 0
m_TargetDisplay: 0
m_BindingLogLevel: 0
m_ClearDepthStencil: 1
m_ClearColor: 0
m_ColorClearValue: {r: 0, g: 0, b: 0, a: 0}
m_VertexBudget: 0
m_DynamicAtlasSettings:
m_MinAtlasSize: 64
m_MaxAtlasSize: 4096
m_MaxSubTextureSize: 64
m_ActiveFilters: -1
m_AtlasBlitShader: {fileID: 9101, guid: 0000000000000000f000000000000000, type: 0}
m_RuntimeShader: {fileID: 9100, guid: 0000000000000000f000000000000000, type: 0}
m_RuntimeWorldShader: {fileID: 9102, guid: 0000000000000000f000000000000000, type: 0}
textSettings: {fileID: 0}
8 changes: 8 additions & 0 deletions Assets/UI Toolkit/sample.asset.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Assets/UI Toolkit/sample.uxml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements" editor-extension-mode="False">
<ui:TextField label="UIToolKit 1" placeholder-text="filler text" password="false" select-all-on-focus="false" select-all-on-mouse-up="false" style="width: 334px; -unity-text-align: upper-left; font-size: 16px; -unity-font-definition: url(&apos;project://database/Assets/Font/SoukouMincho.ttf?fileID=12800000&amp;guid=df7caf3edd728b64aaf970e4487d28cc&amp;type=3#SoukouMincho&apos;);" />
<ui:TextField label="UIToolKit 2" placeholder-text="filler text" hide-placeholder-on-focus="false" readonly="false" multiline="true" style="width: 334px; -unity-font-definition: url(&apos;project://database/Assets/Font/SoukouMincho.ttf?fileID=12800000&amp;guid=df7caf3edd728b64aaf970e4487d28cc&amp;type=3#SoukouMincho&apos;); font-size: 16px; height: 64px;" />
</ui:UXML>
10 changes: 10 additions & 0 deletions Assets/UI Toolkit/sample.uxml.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Assets/UnityDefaultRuntimeTheme.tss
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
@import url("unity-theme://default");
VisualElement {}
11 changes: 11 additions & 0 deletions Assets/UnityDefaultRuntimeTheme.tss.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

45 changes: 45 additions & 0 deletions Assets/WebGLSupport/WebGLInput/Detail/Support.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
using UnityEngine;

namespace WebGLSupport.Detail
{
public static class Support
{
/// <summary>
/// 画面内の描画範囲を取得する
/// </summary>
/// <param name="uiElement"></param>
/// <returns></returns>
public static Rect GetScreenCoordinates(RectTransform uiElement)
{
var worldCorners = new Vector3[4];
uiElement.GetWorldCorners(worldCorners);

// try to support RenderMode:WorldSpace
var canvas = uiElement.GetComponentInParent<Canvas>();
var useCamera = (canvas.renderMode != RenderMode.ScreenSpaceOverlay);
if (canvas && useCamera)
{
var camera = canvas.worldCamera;
if (!camera) camera = Camera.main;

for (var i = 0; i < worldCorners.Length; i++)
{
worldCorners[i] = camera.WorldToScreenPoint(worldCorners[i]);
}
}

var min = new Vector3(float.MaxValue, float.MaxValue);
var max = new Vector3(float.MinValue, float.MinValue);
for (var i = 0; i < worldCorners.Length; i++)
{
min.x = Mathf.Min(min.x, worldCorners[i].x);
min.y = Mathf.Min(min.y, worldCorners[i].y);
max.x = Mathf.Max(max.x, worldCorners[i].x);
max.y = Mathf.Max(max.y, worldCorners[i].y);
}

return new Rect(min.x, min.y, max.x - min.x, max.y - min.y);
}

}
}
2 changes: 2 additions & 0 deletions Assets/WebGLSupport/WebGLInput/Detail/Support.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 6f1cd4e

Please sign in to comment.