浏览代码
Merge pull request #12 from Unity-Technologies/siyaoH/skia
Merge pull request #12 from Unity-Technologies/siyaoH/skia
add paragrah/siyaoH-1.17-PlatformMessage
GitHub
4 年前
当前提交
51985979
共有 39 个文件被更改,包括 6321 次插入 和 107 次删除
-
18com.unity.uiwidgets/Runtime/ui/painting/shader.cs
-
174com.unity.uiwidgets/Runtime/ui2/painting.cs
-
62engine/Build.bee.cs
-
24engine/README.md
-
3engine/src/TestLoadICU.cpp
-
2engine/src/lib/ui/window/window.h
-
3engine/src/render_api.h
-
7engine/src/render_api_d3d11.cc
-
6engine/src/runtime/runtime_controller.cc
-
3engine/src/runtime/runtime_controller.h
-
9engine/src/runtime/runtime_delegate.h
-
12engine/src/shell/common/engine.cc
-
8engine/src/shell/common/engine.h
-
22engine/src/shell/common/shell.cc
-
1engine/src/shell/platform/embedder/embedder.cc
-
2engine/src/shell/platform/embedder/embedder.h
-
13engine/src/shell/platform/unity/uiwidgets_panel.cc
-
198Samples/UIWidgetsSamples_2019_4/Assets/TextTest.cs
-
641Samples/UIWidgetsSamples_2019_4/Assets/TextTest.unity
-
1001com.unity.uiwidgets/Runtime/ui2/text.cs
-
9engine/src/shell/common/lists.cc
-
9engine/src/shell/common/lists.h
-
42engine/src/shell/common/switches.cc
-
10engine/src/shell/common/switches.h
-
825Samples/UIWidgetsSamples_2019_4/Assets/StreamingAssets/Ranchers-Regular.ttf
-
1001Samples/UIWidgetsSamples_2019_4/Assets/StreamingAssets/Roboto-BlackItalic.ttf
-
1001Samples/UIWidgetsSamples_2019_4/Assets/StreamingAssets/Roboto-Italic.ttf
-
228engine/src/lib/ui/text/paragraph.cc
-
50engine/src/lib/ui/text/paragraph.h
-
49engine/src/lib/ui/text/paragraph_builder.h
-
129engine/src/lib/ui/text/asset_manager_font_provider.cc
-
82engine/src/lib/ui/text/asset_manager_font_provider.h
-
129engine/src/lib/ui/text/font_collection.cc
-
35engine/src/lib/ui/text/font_collection.h
-
116engine/src/lib/ui/text/icu_util.cc
-
15engine/src/lib/ui/text/icu_util.h
-
489engine/src/lib/ui/text/paragraph_builder.cc
|
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.IO; |
|||
using Unity.UIWidgets.async2; |
|||
using Unity.UIWidgets.engine2; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.ui2; |
|||
using UnityEngine; |
|||
using Canvas = Unity.UIWidgets.ui2.Canvas; |
|||
using Color = Unity.UIWidgets.ui2.Color; |
|||
using Paint = Unity.UIWidgets.ui2.Paint; |
|||
using ParagraphBuilder = Unity.UIWidgets.ui2.ParagraphBuilder; |
|||
using ParagraphConstraints = Unity.UIWidgets.ui2.ParagraphConstraints; |
|||
using ParagraphStyle = Unity.UIWidgets.ui2.ParagraphStyle; |
|||
using Picture = Unity.UIWidgets.ui2.Picture; |
|||
using PictureRecorder = Unity.UIWidgets.ui2.PictureRecorder; |
|||
using Rect = Unity.UIWidgets.ui.Rect; |
|||
using SceneBuilder = Unity.UIWidgets.ui2.SceneBuilder; |
|||
using TextBaseline = Unity.UIWidgets.ui2.TextBaseline; |
|||
using TextDecoration = Unity.UIWidgets.ui2.TextDecoration; |
|||
using TextDecorationStyle = Unity.UIWidgets.ui2.TextDecorationStyle; |
|||
using TextPosition = Unity.UIWidgets.ui2.TextPosition; |
|||
using Window = Unity.UIWidgets.ui2.Window; |
|||
|
|||
class TextTest : UIWidgetsPanel |
|||
{ |
|||
private bool check = true; |
|||
|
|||
void beginFrame(TimeSpan timeStamp) |
|||
{ |
|||
// The timeStamp argument to beginFrame indicates the timing information we
|
|||
// should use to clock our animations. It's important to use timeStamp rather
|
|||
// than reading the system time because we want all the parts of the system to
|
|||
// coordinate the timings of their animations. If each component read the
|
|||
// system clock independently, the animations that we processed later would be
|
|||
// slightly ahead of the animations we processed earlier.
|
|||
|
|||
// PAINT
|
|||
|
|||
Rect paintBounds = Offset.zero & (Window.instance.physicalSize / Window.instance.devicePixelRatio); |
|||
PictureRecorder recorder = new PictureRecorder(); |
|||
Canvas canvas = new Canvas(recorder, paintBounds); |
|||
canvas.translate(paintBounds.width / 2.0f, paintBounds.height / 2.0f); |
|||
|
|||
// Here we determine the rotation according to the timeStamp given to us by
|
|||
// the engine.
|
|||
float t = (float) timeStamp.TotalMilliseconds / 1800.0f; |
|||
canvas.rotate(Mathf.PI * (t % 2.0f)); |
|||
|
|||
var paint = new Paint(); |
|||
paint.color = Color.fromARGB(100, 100, 100, 0); |
|||
canvas.drawRect(Rect.fromLTRB(0, 0, 100.0f, 100.0f), paint); |
|||
Draw(canvas); |
|||
|
|||
Picture picture = recorder.endRecording(); |
|||
|
|||
// COMPOSITE
|
|||
|
|||
float devicePixelRatio = Window.instance.devicePixelRatio; |
|||
var deviceTransform = new float[16]; |
|||
deviceTransform[0] = devicePixelRatio; |
|||
deviceTransform[5] = devicePixelRatio; |
|||
deviceTransform[10] = 1.0f; |
|||
deviceTransform[15] = 1.0f; |
|||
SceneBuilder sceneBuilder = new SceneBuilder(); |
|||
|
|||
sceneBuilder.pushTransform(deviceTransform); |
|||
sceneBuilder.addPicture(Offset.zero, picture); |
|||
sceneBuilder.pop(); |
|||
Window.instance.render(sceneBuilder.build()); |
|||
|
|||
// After rendering the current frame of the animation, we ask the engine to
|
|||
// schedule another frame. The engine will call beginFrame again when its time
|
|||
// to produce the next frame.
|
|||
Window.instance.scheduleFrame(); |
|||
} |
|||
|
|||
void Draw(Canvas canvas) |
|||
{ |
|||
if (check) |
|||
{ |
|||
var robot_regular_bold = File.ReadAllBytes("./Assets/StreamingAssets/Roboto-BlackItalic.ttf"); |
|||
ui_.loadFontFromList(robot_regular_bold, "Roboto-RegularB").then(value => |
|||
{ |
|||
Debug.Log("finish loading"); |
|||
return FutureOr.nil; |
|||
}); |
|||
var robot_regular = File.ReadAllBytes("./Assets/StreamingAssets/Roboto-Italic.ttf"); |
|||
ui_.loadFontFromList(robot_regular, "Roboto-Regular"); |
|||
var ranchers = File.ReadAllBytes("./Assets/StreamingAssets/Ranchers-Regular.ttf"); |
|||
ui_.loadFontFromList(ranchers, "ranchers"); |
|||
check = false; |
|||
} |
|||
|
|||
var style = new ParagraphStyle( |
|||
fontFamily: "Arial", |
|||
height: 4, |
|||
strutStyle: new StrutStyle(fontFamily: "ranchers", |
|||
fontFamilyFallback: new List<string>() {"Roboto-RegularB"}, |
|||
fontSize: 30), |
|||
ellipsis: "and so on..." |
|||
); |
|||
|
|||
|
|||
var pb = new ParagraphBuilder(style); |
|||
pb.addText("just for testxxx\n"); |
|||
var ts_roboto_regular = new TextStyle( |
|||
color: new Color(0xF000000F), |
|||
decoration: TextDecoration.lineThrough, |
|||
decorationStyle: TextDecorationStyle.doubleLine, |
|||
fontFamily: "Roboto-Regular", |
|||
fontFamilyFallback: new List<string>() {"ranchers"}, |
|||
fontSize: 30, |
|||
height: 1.5f |
|||
); |
|||
pb.pushStyle(ts_roboto_regular); |
|||
pb.addText("just for test\n"); |
|||
var ts_roboto_regular_bold = new TextStyle( |
|||
color: new Color(0xF000000F), |
|||
decoration: TextDecoration.lineThrough, |
|||
decorationStyle: TextDecorationStyle.doubleLine, |
|||
fontFamily: "Roboto-RegularB", |
|||
fontSize: 30, |
|||
height: 1.5f |
|||
); |
|||
pb.pushStyle(ts_roboto_regular_bold); |
|||
pb.addText("just for test\n"); |
|||
var ts_rachers = new TextStyle( |
|||
color: new Color(0xF000000F), |
|||
decoration: TextDecoration.lineThrough, |
|||
decorationStyle: TextDecorationStyle.doubleLine, |
|||
fontFamily: "ranchers", |
|||
fontSize: 30, |
|||
height: 1.5f |
|||
); |
|||
pb.pushStyle(ts_rachers); |
|||
pb.addText("just for test\n"); |
|||
var ts = new TextStyle( |
|||
color: new Color(0xFFFF00F0), |
|||
decoration: TextDecoration.lineThrough, |
|||
decorationStyle: TextDecorationStyle.doubleLine, |
|||
fontFamily: "Arial", |
|||
fontSize: 30, |
|||
height: 1.5f |
|||
); |
|||
pb.pushStyle(ts); |
|||
pb.addText("just for test\n 中文测试 分段测试 分段测试 分段测试 分段测试 分段测试 分段测试 分段测试\n1234"); |
|||
var ts2 = new TextStyle( |
|||
decoration: TextDecoration.underline, |
|||
decorationStyle: TextDecorationStyle.dashed, |
|||
fontFamily: "Arial", |
|||
fontSize: 40, |
|||
height: 1.5f, |
|||
background: new Paint() |
|||
{ |
|||
color = new Color(0xAAFF7F00), |
|||
}, |
|||
foreground: new Paint() |
|||
{ |
|||
color = new Color(0xAAFFFF00) |
|||
} |
|||
); |
|||
pb.pushStyle(ts2); |
|||
pb.addText("test push one more style"); |
|||
pb.pop(); |
|||
pb.addText("test pop style"); |
|||
pb.addPlaceholder(10, 10, PlaceholderAlignment.baseline, TextBaseline.alphabetic); |
|||
var p = pb.build(); |
|||
p.layout(new ParagraphConstraints(300)); |
|||
var wordBoundary = p.getWordBoundary(new TextPosition(10)); |
|||
Debug.Log(wordBoundary); |
|||
var positionForOffset = p.getPositionForOffset(new Offset(10, 1)); |
|||
Debug.Log(positionForOffset); |
|||
var lineBoundary = p.getLineBoundary(new TextPosition(10)); |
|||
Debug.Log(lineBoundary); |
|||
foreach (var textBox in p.getBoxesForPlaceholders()) |
|||
{ |
|||
Debug.Log($"{textBox.bottom} {textBox.direction} {textBox.left} {textBox.right}"); |
|||
} |
|||
foreach (var textBox in p.getBoxesForRange(1, 20)) |
|||
{ |
|||
Debug.Log($"{textBox.bottom} {textBox.direction} {textBox.left} {textBox.right}"); |
|||
} |
|||
|
|||
foreach (var lineMetrics in p.computeLineMetrics()) |
|||
{ |
|||
Debug.Log($"{lineMetrics.height} {lineMetrics.lineNumber}"); |
|||
} |
|||
|
|||
canvas.drawParagraph(p, new Offset(-100, -100)); |
|||
} |
|||
|
|||
protected override void main() |
|||
{ |
|||
Window.instance.onBeginFrame = beginFrame; |
|||
Window.instance.scheduleFrame(); |
|||
} |
|||
} |
|
|||
%YAML 1.1 |
|||
%TAG !u! tag:unity3d.com,2011: |
|||
--- !u!29 &1 |
|||
OcclusionCullingSettings: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 2 |
|||
m_OcclusionBakeSettings: |
|||
smallestOccluder: 5 |
|||
smallestHole: 0.25 |
|||
backfaceThreshold: 100 |
|||
m_SceneGUID: 00000000000000000000000000000000 |
|||
m_OcclusionCullingData: {fileID: 0} |
|||
--- !u!104 &2 |
|||
RenderSettings: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 9 |
|||
m_Fog: 0 |
|||
m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} |
|||
m_FogMode: 3 |
|||
m_FogDensity: 0.01 |
|||
m_LinearFogStart: 0 |
|||
m_LinearFogEnd: 300 |
|||
m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} |
|||
m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} |
|||
m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} |
|||
m_AmbientIntensity: 1 |
|||
m_AmbientMode: 0 |
|||
m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} |
|||
m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} |
|||
m_HaloStrength: 0.5 |
|||
m_FlareStrength: 1 |
|||
m_FlareFadeSpeed: 3 |
|||
m_HaloTexture: {fileID: 0} |
|||
m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} |
|||
m_DefaultReflectionMode: 0 |
|||
m_DefaultReflectionResolution: 128 |
|||
m_ReflectionBounces: 1 |
|||
m_ReflectionIntensity: 1 |
|||
m_CustomReflection: {fileID: 0} |
|||
m_Sun: {fileID: 0} |
|||
m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} |
|||
m_UseRadianceAmbientProbe: 0 |
|||
--- !u!157 &3 |
|||
LightmapSettings: |
|||
m_ObjectHideFlags: 0 |
|||
serializedVersion: 11 |
|||
m_GIWorkflowMode: 1 |
|||
m_GISettings: |
|||
serializedVersion: 2 |
|||
m_BounceScale: 1 |
|||
m_IndirectOutputScale: 1 |
|||
m_AlbedoBoost: 1 |
|||
m_EnvironmentLightingMode: 0 |
|||
m_EnableBakedLightmaps: 1 |
|||
m_EnableRealtimeLightmaps: 0 |
|||
m_LightmapEditorSettings: |
|||
serializedVersion: 12 |
|||
m_Resolution: 2 |
|||
m_BakeResolution: 40 |
|||
m_AtlasSize: 1024 |
|||
m_AO: 0 |
|||
m_AOMaxDistance: 1 |
|||
m_CompAOExponent: 1 |
|||
m_CompAOExponentDirect: 0 |
|||
m_ExtractAmbientOcclusion: 0 |
|||
m_Padding: 2 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_LightmapsBakeMode: 1 |
|||
m_TextureCompression: 1 |
|||
m_FinalGather: 0 |
|||
m_FinalGatherFiltering: 1 |
|||
m_FinalGatherRayCount: 256 |
|||
m_ReflectionCompression: 2 |
|||
m_MixedBakeMode: 2 |
|||
m_BakeBackend: 1 |
|||
m_PVRSampling: 1 |
|||
m_PVRDirectSampleCount: 32 |
|||
m_PVRSampleCount: 512 |
|||
m_PVRBounces: 2 |
|||
m_PVREnvironmentSampleCount: 256 |
|||
m_PVREnvironmentReferencePointCount: 2048 |
|||
m_PVRFilteringMode: 1 |
|||
m_PVRDenoiserTypeDirect: 1 |
|||
m_PVRDenoiserTypeIndirect: 1 |
|||
m_PVRDenoiserTypeAO: 1 |
|||
m_PVRFilterTypeDirect: 0 |
|||
m_PVRFilterTypeIndirect: 0 |
|||
m_PVRFilterTypeAO: 0 |
|||
m_PVREnvironmentMIS: 1 |
|||
m_PVRCulling: 1 |
|||
m_PVRFilteringGaussRadiusDirect: 1 |
|||
m_PVRFilteringGaussRadiusIndirect: 5 |
|||
m_PVRFilteringGaussRadiusAO: 2 |
|||
m_PVRFilteringAtrousPositionSigmaDirect: 0.5 |
|||
m_PVRFilteringAtrousPositionSigmaIndirect: 2 |
|||
m_PVRFilteringAtrousPositionSigmaAO: 1 |
|||
m_ExportTrainingData: 0 |
|||
m_TrainingDataDestination: TrainingData |
|||
m_LightProbeSampleCountMultiplier: 4 |
|||
m_LightingDataAsset: {fileID: 0} |
|||
m_UseShadowmask: 1 |
|||
--- !u!196 &4 |
|||
NavMeshSettings: |
|||
serializedVersion: 2 |
|||
m_ObjectHideFlags: 0 |
|||
m_BuildSettings: |
|||
serializedVersion: 2 |
|||
agentTypeID: 0 |
|||
agentRadius: 0.5 |
|||
agentHeight: 2 |
|||
agentSlope: 45 |
|||
agentClimb: 0.4 |
|||
ledgeDropHeight: 0 |
|||
maxJumpAcrossDistance: 0 |
|||
minRegionArea: 2 |
|||
manualCellSize: 0 |
|||
cellSize: 0.16666667 |
|||
manualTileSize: 0 |
|||
tileSize: 256 |
|||
accuratePlacement: 0 |
|||
debug: |
|||
m_Flags: 0 |
|||
m_NavMeshData: {fileID: 0} |
|||
--- !u!1 &764046566 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 764046568} |
|||
- component: {fileID: 764046567} |
|||
m_Layer: 0 |
|||
m_Name: Directional Light |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!108 &764046567 |
|||
Light: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 764046566} |
|||
m_Enabled: 1 |
|||
serializedVersion: 10 |
|||
m_Type: 1 |
|||
m_Shape: 0 |
|||
m_Color: {r: 1, g: 1, b: 1, a: 1} |
|||
m_Intensity: 1 |
|||
m_Range: 10 |
|||
m_SpotAngle: 30 |
|||
m_InnerSpotAngle: 21.80208 |
|||
m_CookieSize: 10 |
|||
m_Shadows: |
|||
m_Type: 2 |
|||
m_Resolution: -1 |
|||
m_CustomResolution: -1 |
|||
m_Strength: 1 |
|||
m_Bias: 0.05 |
|||
m_NormalBias: 0.4 |
|||
m_NearPlane: 0.2 |
|||
m_CullingMatrixOverride: |
|||
e00: 1 |
|||
e01: 0 |
|||
e02: 0 |
|||
e03: 0 |
|||
e10: 0 |
|||
e11: 1 |
|||
e12: 0 |
|||
e13: 0 |
|||
e20: 0 |
|||
e21: 0 |
|||
e22: 1 |
|||
e23: 0 |
|||
e30: 0 |
|||
e31: 0 |
|||
e32: 0 |
|||
e33: 1 |
|||
m_UseCullingMatrixOverride: 0 |
|||
m_Cookie: {fileID: 0} |
|||
m_DrawHalo: 0 |
|||
m_Flare: {fileID: 0} |
|||
m_RenderMode: 0 |
|||
m_CullingMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294967295 |
|||
m_RenderingLayerMask: 1 |
|||
m_Lightmapping: 4 |
|||
m_LightShadowCasterMode: 0 |
|||
m_AreaSize: {x: 1, y: 1} |
|||
m_BounceIntensity: 1 |
|||
m_ColorTemperature: 6570 |
|||
m_UseColorTemperature: 0 |
|||
m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} |
|||
m_UseBoundingSphereOverride: 0 |
|||
m_ShadowRadius: 0 |
|||
m_ShadowAngle: 0 |
|||
--- !u!4 &764046568 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 764046566} |
|||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} |
|||
m_LocalPosition: {x: 0, y: 3, z: 0} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 1 |
|||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} |
|||
--- !u!1 &847097468 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 847097469} |
|||
- component: {fileID: 847097471} |
|||
- component: {fileID: 847097470} |
|||
m_Layer: 5 |
|||
m_Name: RawImage |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!224 &847097469 |
|||
RectTransform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 847097468} |
|||
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_Children: [] |
|||
m_Father: {fileID: 2122288190} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
m_AnchorMin: {x: 0.5, y: 0.5} |
|||
m_AnchorMax: {x: 0.5, y: 0.5} |
|||
m_AnchoredPosition: {x: -1.3, y: 0.8} |
|||
m_SizeDelta: {x: 483, y: 399} |
|||
m_Pivot: {x: 0.5, y: 0.5} |
|||
--- !u!114 &847097470 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 847097468} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: db61290d6ca38264995f5749021d562c, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_Material: {fileID: 0} |
|||
m_Color: {r: 1, g: 1, b: 1, a: 1} |
|||
m_RaycastTarget: 1 |
|||
m_Maskable: 1 |
|||
m_OnCullStateChanged: |
|||
m_PersistentCalls: |
|||
m_Calls: [] |
|||
m_Texture: {fileID: 0} |
|||
m_UVRect: |
|||
serializedVersion: 2 |
|||
x: 0 |
|||
y: 0 |
|||
width: 1 |
|||
height: 1 |
|||
--- !u!222 &847097471 |
|||
CanvasRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 847097468} |
|||
m_CullTransparentMesh: 0 |
|||
--- !u!1 &1140493537 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 1140493542} |
|||
- component: {fileID: 1140493541} |
|||
- component: {fileID: 1140493540} |
|||
- component: {fileID: 1140493539} |
|||
- component: {fileID: 1140493538} |
|||
m_Layer: 0 |
|||
m_Name: Plane |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 0 |
|||
--- !u!114 &1140493538 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1140493537} |
|||
m_Enabled: 0 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: ff655c85f67513d4d9e0967df8685a48, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
--- !u!64 &1140493539 |
|||
MeshCollider: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1140493537} |
|||
m_Material: {fileID: 0} |
|||
m_IsTrigger: 0 |
|||
m_Enabled: 1 |
|||
serializedVersion: 4 |
|||
m_Convex: 0 |
|||
m_CookingOptions: 30 |
|||
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!23 &1140493540 |
|||
MeshRenderer: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1140493537} |
|||
m_Enabled: 1 |
|||
m_CastShadows: 1 |
|||
m_ReceiveShadows: 1 |
|||
m_DynamicOccludee: 1 |
|||
m_MotionVectors: 1 |
|||
m_LightProbeUsage: 1 |
|||
m_ReflectionProbeUsage: 1 |
|||
m_RayTracingMode: 2 |
|||
m_RenderingLayerMask: 1 |
|||
m_RendererPriority: 0 |
|||
m_Materials: |
|||
- {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} |
|||
m_StaticBatchInfo: |
|||
firstSubMesh: 0 |
|||
subMeshCount: 0 |
|||
m_StaticBatchRoot: {fileID: 0} |
|||
m_ProbeAnchor: {fileID: 0} |
|||
m_LightProbeVolumeOverride: {fileID: 0} |
|||
m_ScaleInLightmap: 1 |
|||
m_ReceiveGI: 1 |
|||
m_PreserveUVs: 0 |
|||
m_IgnoreNormalsForChartDetection: 0 |
|||
m_ImportantGI: 0 |
|||
m_StitchLightmapSeams: 1 |
|||
m_SelectedEditorRenderState: 3 |
|||
m_MinimumChartSize: 4 |
|||
m_AutoUVMaxDistance: 0.5 |
|||
m_AutoUVMaxAngle: 89 |
|||
m_LightmapParameters: {fileID: 0} |
|||
m_SortingLayerID: 0 |
|||
m_SortingLayer: 0 |
|||
m_SortingOrder: 0 |
|||
--- !u!33 &1140493541 |
|||
MeshFilter: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1140493537} |
|||
m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} |
|||
--- !u!4 &1140493542 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1140493537} |
|||
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_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 2 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!1 &1548023132 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 1548023135} |
|||
- component: {fileID: 1548023134} |
|||
- component: {fileID: 1548023133} |
|||
m_Layer: 0 |
|||
m_Name: Main Camera |
|||
m_TagString: MainCamera |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!81 &1548023133 |
|||
AudioListener: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1548023132} |
|||
m_Enabled: 1 |
|||
--- !u!20 &1548023134 |
|||
Camera: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1548023132} |
|||
m_Enabled: 1 |
|||
serializedVersion: 2 |
|||
m_ClearFlags: 1 |
|||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} |
|||
m_projectionMatrixMode: 1 |
|||
m_GateFitMode: 2 |
|||
m_FOVAxisMode: 0 |
|||
m_SensorSize: {x: 36, y: 24} |
|||
m_LensShift: {x: 0, y: 0} |
|||
m_FocalLength: 50 |
|||
m_NormalizedViewPortRect: |
|||
serializedVersion: 2 |
|||
x: 0 |
|||
y: 0 |
|||
width: 1 |
|||
height: 1 |
|||
near clip plane: 0.3 |
|||
far clip plane: 1000 |
|||
field of view: 60 |
|||
orthographic: 1 |
|||
orthographic size: 5.6 |
|||
m_Depth: -1 |
|||
m_CullingMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294967295 |
|||
m_RenderingPath: -1 |
|||
m_TargetTexture: {fileID: 0} |
|||
m_TargetDisplay: 0 |
|||
m_TargetEye: 3 |
|||
m_HDR: 1 |
|||
m_AllowMSAA: 1 |
|||
m_AllowDynamicResolution: 0 |
|||
m_ForceIntoRT: 0 |
|||
m_OcclusionCulling: 1 |
|||
m_StereoConvergence: 10 |
|||
m_StereoSeparation: 0.022 |
|||
--- !u!4 &1548023135 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1548023132} |
|||
m_LocalRotation: {x: 0, y: 0.7071068, z: -0.7071068, w: 0} |
|||
m_LocalPosition: {x: 0, y: 1, z: 0.32} |
|||
m_LocalScale: {x: 1, y: 1, z: 1} |
|||
m_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 0 |
|||
m_LocalEulerAnglesHint: {x: 90, y: 180, z: 0} |
|||
--- !u!1 &1900497009 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 1900497012} |
|||
- component: {fileID: 1900497011} |
|||
- component: {fileID: 1900497010} |
|||
m_Layer: 0 |
|||
m_Name: EventSystem |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!114 &1900497010 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1900497009} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_HorizontalAxis: Horizontal |
|||
m_VerticalAxis: Vertical |
|||
m_SubmitButton: Submit |
|||
m_CancelButton: Cancel |
|||
m_InputActionsPerSecond: 10 |
|||
m_RepeatDelay: 0.5 |
|||
m_ForceModuleActive: 0 |
|||
--- !u!114 &1900497011 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1900497009} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_FirstSelected: {fileID: 0} |
|||
m_sendNavigationEvents: 1 |
|||
m_DragThreshold: 10 |
|||
--- !u!4 &1900497012 |
|||
Transform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 1900497009} |
|||
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_Children: [] |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 4 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
--- !u!1 &2122288186 |
|||
GameObject: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
serializedVersion: 6 |
|||
m_Component: |
|||
- component: {fileID: 2122288190} |
|||
- component: {fileID: 2122288189} |
|||
- component: {fileID: 2122288188} |
|||
- component: {fileID: 2122288187} |
|||
m_Layer: 5 |
|||
m_Name: Canvas |
|||
m_TagString: Untagged |
|||
m_Icon: {fileID: 0} |
|||
m_NavMeshLayer: 0 |
|||
m_StaticEditorFlags: 0 |
|||
m_IsActive: 1 |
|||
--- !u!114 &2122288187 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 2122288186} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_IgnoreReversedGraphics: 1 |
|||
m_BlockingObjects: 0 |
|||
m_BlockingMask: |
|||
serializedVersion: 2 |
|||
m_Bits: 4294967295 |
|||
--- !u!114 &2122288188 |
|||
MonoBehaviour: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 2122288186} |
|||
m_Enabled: 1 |
|||
m_EditorHideFlags: 0 |
|||
m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} |
|||
m_Name: |
|||
m_EditorClassIdentifier: |
|||
m_UiScaleMode: 0 |
|||
m_ReferencePixelsPerUnit: 100 |
|||
m_ScaleFactor: 1 |
|||
m_ReferenceResolution: {x: 800, y: 600} |
|||
m_ScreenMatchMode: 0 |
|||
m_MatchWidthOrHeight: 0 |
|||
m_PhysicalUnit: 3 |
|||
m_FallbackScreenDPI: 96 |
|||
m_DefaultSpriteDPI: 96 |
|||
m_DynamicPixelsPerUnit: 1 |
|||
--- !u!223 &2122288189 |
|||
Canvas: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 2122288186} |
|||
m_Enabled: 1 |
|||
serializedVersion: 3 |
|||
m_RenderMode: 0 |
|||
m_Camera: {fileID: 0} |
|||
m_PlaneDistance: 100 |
|||
m_PixelPerfect: 0 |
|||
m_ReceivesEvents: 1 |
|||
m_OverrideSorting: 0 |
|||
m_OverridePixelPerfect: 0 |
|||
m_SortingBucketNormalizedSize: 0 |
|||
m_AdditionalShaderChannelsFlag: 0 |
|||
m_SortingLayerID: 0 |
|||
m_SortingOrder: 0 |
|||
m_TargetDisplay: 0 |
|||
--- !u!224 &2122288190 |
|||
RectTransform: |
|||
m_ObjectHideFlags: 0 |
|||
m_CorrespondingSourceObject: {fileID: 0} |
|||
m_PrefabInstance: {fileID: 0} |
|||
m_PrefabAsset: {fileID: 0} |
|||
m_GameObject: {fileID: 2122288186} |
|||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
|||
m_LocalPosition: {x: 0, y: 0, z: 0} |
|||
m_LocalScale: {x: 0, y: 0, z: 0} |
|||
m_Children: |
|||
- {fileID: 847097469} |
|||
m_Father: {fileID: 0} |
|||
m_RootOrder: 3 |
|||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
|||
m_AnchorMin: {x: 0, y: 0} |
|||
m_AnchorMax: {x: 0, y: 0} |
|||
m_AnchoredPosition: {x: 0, y: 0} |
|||
m_SizeDelta: {x: 0, y: 0} |
|||
m_Pivot: {x: 0, y: 0} |
1001
com.unity.uiwidgets/Runtime/ui2/text.cs
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
#pragma once
|
|||
|
|||
#include "lists.h"
|
|||
|
|||
namespace uiwidgets { |
|||
namespace { |
|||
UIWIDGETS_API(void) Lists_Free(void* data) { free(data); } // namespace
|
|||
} // namespace
|
|||
} // namespace uiwidgets
|
|
|||
#pragma once |
|||
#include "runtime/mono_api.h" |
|||
|
|||
namespace uiwidgets { |
|||
struct Float32List { |
|||
float* data; |
|||
int length; |
|||
}; |
|||
} // namespace uiwidgets |
|
|||
#include "switches.h"
|
|||
|
|||
#include <cstdint>
|
|||
|
|||
namespace uiwidgets { |
|||
extern "C" uint8_t _binary_icudtl_dat_start[]; |
|||
extern "C" uint8_t _binary_icudtl_dat_end[]; |
|||
|
|||
std::unique_ptr<fml::Mapping> GetICUStaticMapping() { |
|||
return std::make_unique<fml::NonOwnedMapping>( |
|||
_binary_icudtl_dat_start, |
|||
_binary_icudtl_dat_end - _binary_icudtl_dat_start); |
|||
} |
|||
|
|||
std::unique_ptr<fml::Mapping> GetSymbolMapping(std::string symbol_prefix, |
|||
std::string native_lib_path) { |
|||
const uint8_t* mapping; |
|||
intptr_t size; |
|||
|
|||
auto lookup_symbol = [&mapping, &size, symbol_prefix]( |
|||
const fml::RefPtr<fml::NativeLibrary>& library) { |
|||
mapping = library->ResolveSymbol((symbol_prefix + "_start").c_str()); |
|||
size = reinterpret_cast<intptr_t>( |
|||
library->ResolveSymbol((symbol_prefix + "_size").c_str())); |
|||
}; |
|||
|
|||
fml::RefPtr<fml::NativeLibrary> library = |
|||
fml::NativeLibrary::CreateForCurrentProcess(); |
|||
lookup_symbol(library); |
|||
|
|||
if (!(mapping && size)) { |
|||
// Symbol lookup for the current process fails on some devices. As a
|
|||
// fallback, try doing the lookup based on the path to the Flutter library.
|
|||
library = fml::NativeLibrary::Create(native_lib_path.c_str()); |
|||
lookup_symbol(library); |
|||
} |
|||
|
|||
FML_CHECK(mapping && size) << "Unable to resolve symbols: " << symbol_prefix; |
|||
return std::make_unique<fml::NonOwnedMapping>(mapping, size); |
|||
} |
|||
|
|||
} // namespace uiwidgets
|
|
|||
#pragma once |
|||
#include <flutter/fml/memory/ref_counted.h> |
|||
|
|||
#include "flutter/fml/mapping.h" |
|||
|
|||
namespace uiwidgets { |
|||
std::unique_ptr<fml::Mapping> GetICUStaticMapping(); |
|||
std::unique_ptr<fml::Mapping> GetSymbolMapping(std::string symbol_prefix, |
|||
std::string native_lib_path); |
|||
} // namespace uiwidgets |
|
|||
|