fzhangtj
6 年前
当前提交
d217b35c
共有 106 个文件被更改,包括 22938 次插入 和 225 次删除
-
4Runtime/Resources/UIWidgets_canvas.cginc
-
17Runtime/engine/UIWidgetsPanel.cs
-
1Runtime/flow/clip_path_layer.cs
-
1Runtime/flow/clip_rect_layer.cs
-
1Runtime/flow/clip_rrect_layer.cs
-
38Runtime/flow/physical_shape_layer.cs
-
5Runtime/flow/raster_cache.cs
-
24Runtime/gestures/monodrag.cs
-
9Runtime/gestures/recognizer.cs
-
7Runtime/material/app_bar.cs
-
145Runtime/material/bottom_sheet.cs
-
23Runtime/material/dropdown.cs
-
55Runtime/material/input_border.cs
-
170Runtime/material/input_decorator.cs
-
25Runtime/material/outline_button.cs
-
2Runtime/material/scaffold.cs
-
2Runtime/material/theme.cs
-
2Runtime/rendering/object.mixin.gen.cs
-
6Runtime/rendering/paragraph.cs
-
202Runtime/rendering/proxy_box.cs
-
8Runtime/rendering/sliver_persistent_header.cs
-
1Runtime/rendering/stack.cs
-
86Runtime/ui/geometry.cs
-
6Runtime/ui/matrix.cs
-
8Runtime/ui/painting/canvas.cs
-
6Runtime/ui/painting/canvas_impl.cs
-
39Runtime/ui/painting/path.cs
-
35Runtime/widgets/basic.cs
-
24Runtime/widgets/binding.cs
-
6Runtime/widgets/framework.cs
-
2Runtime/widgets/media_query.cs
-
10Runtime/widgets/scroll_physics.cs
-
4Runtime/widgets/sliver_persistent_header.cs
-
24Samples/UIWidgetSample/MaterialSample.cs
-
2Samples/UIWidgetsGallery/demo/colors_demo.cs
-
62Samples/UIWidgetsGallery/gallery/demo.cs
-
74Samples/UIWidgetsGallery/gallery/demos.cs
-
110Runtime/material/bottom_app_bar.cs
-
3Runtime/material/bottom_app_bar.cs.meta
-
592Runtime/material/bottom_navigation_bar.cs
-
3Runtime/material/bottom_navigation_bar.cs.meta
-
183Runtime/material/radio.cs
-
3Runtime/material/radio.cs.meta
-
71Runtime/painting/notched_shapes.cs
-
3Runtime/painting/notched_shapes.cs.meta
-
181Runtime/ui/painting/shadow_utils.cs
-
27Runtime/widgets/bottom_navigation_bar_item.cs
-
3Runtime/widgets/bottom_navigation_bar_item.cs.meta
-
423Samples/UIWidgetsGallery/demo/material/backdrop_demo.cs
-
3Samples/UIWidgetsGallery/demo/material/backdrop_demo.cs.meta
-
523Samples/UIWidgetsGallery/demo/material/bottom_app_bar_demo.cs
-
3Samples/UIWidgetsGallery/demo/material/bottom_app_bar_demo.cs.meta
-
228Samples/UIWidgetsGallery/demo/material/bottom_navigation_demo.cs
-
3Samples/UIWidgetsGallery/demo/material/bottom_navigation_demo.cs.meta
-
217Samples/UIWidgetsGallery/demo/material/cards_demo.cs
-
3Samples/UIWidgetsGallery/demo/material/cards_demo.cs.meta
-
1001Tests/Resources/india_chettinad_silk_maker.png
-
88Tests/Resources/india_chettinad_silk_maker.png.meta
-
1001Tests/Resources/india_thanjavur_market.png
-
88Tests/Resources/india_thanjavur_market.png.meta
-
8Tests/Resources/products.meta
-
1001Tests/Resources/products/backpack.png
-
88Tests/Resources/products/backpack.png.meta
-
1001Tests/Resources/products/belt.png
-
88Tests/Resources/products/belt.png.meta
-
406Tests/Resources/products/cup.png
-
88Tests/Resources/products/cup.png.meta
-
1001Tests/Resources/products/deskset.png
-
88Tests/Resources/products/deskset.png.meta
-
702Tests/Resources/products/dress.png
-
88Tests/Resources/products/dress.png.meta
-
1001Tests/Resources/products/earrings.png
-
88Tests/Resources/products/earrings.png.meta
-
408Tests/Resources/products/flatwear.png
-
88Tests/Resources/products/flatwear.png.meta
-
852Tests/Resources/products/hat.png
-
88Tests/Resources/products/hat.png.meta
-
702Tests/Resources/products/jacket.png
-
88Tests/Resources/products/jacket.png.meta
-
676Tests/Resources/products/jumper.png
-
88Tests/Resources/products/jumper.png.meta
-
1001Tests/Resources/products/kitchen_quattro.png
-
88Tests/Resources/products/kitchen_quattro.png.meta
-
1001Tests/Resources/products/napkins.png
-
88Tests/Resources/products/napkins.png.meta
-
984Tests/Resources/products/planters.png
-
88Tests/Resources/products/planters.png.meta
-
908Tests/Resources/products/platter.png
-
88Tests/Resources/products/platter.png.meta
-
1001Tests/Resources/products/scarf.png
-
88Tests/Resources/products/scarf.png.meta
-
808Tests/Resources/products/shirt.png
-
88Tests/Resources/products/shirt.png.meta
-
360Tests/Resources/products/sunnies.png
-
88Tests/Resources/products/sunnies.png.meta
-
807Tests/Resources/products/sweater.png
-
88Tests/Resources/products/sweater.png.meta
-
967Tests/Resources/products/sweats.png
-
88Tests/Resources/products/sweats.png.meta
|
|||
using Unity.UIWidgets.foundation; |
|||
using Unity.UIWidgets.painting; |
|||
using Unity.UIWidgets.rendering; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.widgets; |
|||
|
|||
namespace Unity.UIWidgets.material { |
|||
public class BottomAppBar : StatefulWidget { |
|||
public BottomAppBar( |
|||
Key key = null, |
|||
Color color = null, |
|||
float elevation = 8.0f, |
|||
NotchedShape shape = null, |
|||
Clip clipBehavior = Clip.none, |
|||
float notchMargin = 4.0f, |
|||
Widget child = null |
|||
) : base(key: key) { |
|||
D.assert(elevation >= 0.0f); |
|||
this.child = child; |
|||
this.color = color; |
|||
this.elevation = elevation; |
|||
this.shape = shape; |
|||
this.clipBehavior = clipBehavior; |
|||
this.notchMargin = notchMargin; |
|||
} |
|||
|
|||
public readonly Widget child; |
|||
|
|||
public readonly Color color; |
|||
|
|||
public readonly float elevation; |
|||
|
|||
public readonly NotchedShape shape; |
|||
|
|||
public readonly Clip clipBehavior; |
|||
|
|||
public readonly float notchMargin; |
|||
|
|||
public override State createState() { |
|||
return new _BottomAppBarState(); |
|||
} |
|||
} |
|||
|
|||
class _BottomAppBarState : State<BottomAppBar> { |
|||
ValueListenable<ScaffoldGeometry> geometryListenable; |
|||
|
|||
public override void didChangeDependencies() { |
|||
base.didChangeDependencies(); |
|||
this.geometryListenable = Scaffold.geometryOf(this.context); |
|||
} |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
CustomClipper<Path> clipper = this.widget.shape != null |
|||
? (CustomClipper<Path>) new _BottomAppBarClipper( |
|||
geometry: this.geometryListenable, |
|||
shape: this.widget.shape, |
|||
notchMargin: this.widget.notchMargin |
|||
) |
|||
: new ShapeBorderClipper(shape: new RoundedRectangleBorder()); |
|||
return new PhysicalShape( |
|||
clipper: clipper, |
|||
elevation: this.widget.elevation, |
|||
color: this.widget.color ?? Theme.of(context).bottomAppBarColor, |
|||
clipBehavior: this.widget.clipBehavior, |
|||
child: new Material( |
|||
type: MaterialType.transparency, |
|||
child: this.widget.child == null |
|||
? null |
|||
: new SafeArea(child: this.widget.child) |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _BottomAppBarClipper : CustomClipper<Path> { |
|||
public _BottomAppBarClipper( |
|||
ValueListenable<ScaffoldGeometry> geometry, |
|||
NotchedShape shape, |
|||
float notchMargin |
|||
) : base(reclip: geometry) { |
|||
D.assert(geometry != null); |
|||
D.assert(shape != null); |
|||
this.geometry = geometry; |
|||
this.shape = shape; |
|||
this.notchMargin = notchMargin; |
|||
} |
|||
|
|||
public readonly ValueListenable<ScaffoldGeometry> geometry; |
|||
public readonly NotchedShape shape; |
|||
public readonly float notchMargin; |
|||
|
|||
public override Path getClip(Size size) { |
|||
Rect appBar = Offset.zero & size; |
|||
if (this.geometry.value.floatingActionButtonArea == null) { |
|||
Path path = new Path(); |
|||
path.addRect(appBar); |
|||
return path; |
|||
} |
|||
|
|||
Rect button = this.geometry.value.floatingActionButtonArea |
|||
.translate(0.0f, (this.geometry.value.bottomNavigationBarTop * -1.0f) ?? 0.0f); |
|||
|
|||
return this.shape.getOuterPath(appBar, button.inflate(this.notchMargin)); |
|||
} |
|||
|
|||
public override bool shouldReclip(CustomClipper<Path> oldClipper) { |
|||
return (oldClipper as _BottomAppBarClipper).geometry != this.geometry; |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: aa89369405044a62a19225b2c20815f6 |
|||
timeCreated: 1553156127 |
|
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using Unity.UIWidgets.animation; |
|||
using Unity.UIWidgets.foundation; |
|||
using Unity.UIWidgets.gestures; |
|||
using Unity.UIWidgets.painting; |
|||
using Unity.UIWidgets.rendering; |
|||
using Unity.UIWidgets.scheduler; |
|||
using Unity.UIWidgets.service; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.widgets; |
|||
using UnityEngine; |
|||
using Canvas = Unity.UIWidgets.ui.Canvas; |
|||
using Color = Unity.UIWidgets.ui.Color; |
|||
using Rect = Unity.UIWidgets.ui.Rect; |
|||
using TextStyle = Unity.UIWidgets.painting.TextStyle; |
|||
using Transform = Unity.UIWidgets.widgets.Transform; |
|||
|
|||
namespace Unity.UIWidgets.material { |
|||
class BottomNavigationBarUtils { |
|||
public const float _kActiveFontSize = 14.0f; |
|||
public const float _kInactiveFontSize = 12.0f; |
|||
public const float _kTopMargin = 6.0f; |
|||
public const float _kBottomMargin = 8.0f; |
|||
} |
|||
|
|||
public enum BottomNavigationBarType { |
|||
fix, |
|||
shifting |
|||
} |
|||
|
|||
public class BottomNavigationBar : StatefulWidget { |
|||
public BottomNavigationBar( |
|||
Key key = null, |
|||
List<BottomNavigationBarItem> items = null, |
|||
ValueChanged<int> onTap = null, |
|||
int currentIndex = 0, |
|||
BottomNavigationBarType? type = null, |
|||
Color fixedColor = null, |
|||
float iconSize = 24.0f |
|||
) : base(key: key) { |
|||
D.assert(items != null); |
|||
D.assert(items.Count >= 2); |
|||
D.assert(items.All((BottomNavigationBarItem item) => item.title != null) == true, |
|||
"Every item must have a non-null title" |
|||
); |
|||
D.assert(0 <= currentIndex && currentIndex < items.Count); |
|||
this.items = items; |
|||
this.onTap = onTap; |
|||
this.currentIndex = currentIndex; |
|||
this.type = type ?? (items.Count <= 3 ? BottomNavigationBarType.fix : BottomNavigationBarType.shifting); |
|||
this.fixedColor = fixedColor; |
|||
this.iconSize = iconSize; |
|||
} |
|||
|
|||
public readonly List<BottomNavigationBarItem> items; |
|||
|
|||
public readonly ValueChanged<int> onTap; |
|||
|
|||
public readonly int currentIndex; |
|||
|
|||
public readonly BottomNavigationBarType? type; |
|||
|
|||
public readonly Color fixedColor; |
|||
|
|||
public readonly float iconSize; |
|||
|
|||
public override State createState() { |
|||
return new _BottomNavigationBarState(); |
|||
} |
|||
} |
|||
|
|||
class _BottomNavigationTile : StatelessWidget { |
|||
public _BottomNavigationTile( |
|||
BottomNavigationBarType? type, |
|||
BottomNavigationBarItem item, |
|||
Animation<float> animation, |
|||
float? iconSize = null, |
|||
VoidCallback onTap = null, |
|||
ColorTween colorTween = null, |
|||
float? flex = null, |
|||
bool selected = false, |
|||
string indexLabel = null |
|||
) { |
|||
this.type = type; |
|||
this.item = item; |
|||
this.animation = animation; |
|||
this.iconSize = iconSize; |
|||
this.onTap = onTap; |
|||
this.colorTween = colorTween; |
|||
this.flex = flex; |
|||
this.selected = selected; |
|||
this.indexLabel = indexLabel; |
|||
} |
|||
|
|||
public readonly BottomNavigationBarType? type; |
|||
public readonly BottomNavigationBarItem item; |
|||
public readonly Animation<float> animation; |
|||
public readonly float? iconSize; |
|||
public readonly VoidCallback onTap; |
|||
public readonly ColorTween colorTween; |
|||
public readonly float? flex; |
|||
public readonly bool selected; |
|||
public readonly string indexLabel; |
|||
|
|||
Widget _buildIcon() { |
|||
float tweenStart; |
|||
Color iconColor; |
|||
switch (this.type) { |
|||
case BottomNavigationBarType.fix: |
|||
tweenStart = 8.0f; |
|||
iconColor = this.colorTween.evaluate(this.animation); |
|||
break; |
|||
case BottomNavigationBarType.shifting: |
|||
tweenStart = 16.0f; |
|||
iconColor = Colors.white; |
|||
break; |
|||
default: |
|||
throw new Exception("Unknown BottomNavigationBarType: " + this.type); |
|||
} |
|||
|
|||
return new Align( |
|||
alignment: Alignment.topCenter, |
|||
heightFactor: 1.0f, |
|||
child: new Container( |
|||
margin: EdgeInsets.only( |
|||
top: new FloatTween( |
|||
begin: tweenStart, |
|||
end: BottomNavigationBarUtils._kTopMargin |
|||
).evaluate(this.animation) |
|||
), |
|||
child: new IconTheme( |
|||
data: new IconThemeData( |
|||
color: iconColor, |
|||
size: this.iconSize |
|||
), |
|||
child: this.selected ? this.item.activeIcon : this.item.icon |
|||
) |
|||
) |
|||
); |
|||
} |
|||
|
|||
Widget _buildFixedLabel() { |
|||
float t = new FloatTween( |
|||
begin: BottomNavigationBarUtils._kInactiveFontSize / BottomNavigationBarUtils._kActiveFontSize, |
|||
end: 1.0f |
|||
).evaluate(this.animation); |
|||
return new Align( |
|||
alignment: Alignment.bottomCenter, |
|||
heightFactor: 1.0f, |
|||
child: new Container( |
|||
margin: EdgeInsets.only(bottom: BottomNavigationBarUtils._kBottomMargin), |
|||
child: DefaultTextStyle.merge( |
|||
style: new TextStyle( |
|||
fontSize: BottomNavigationBarUtils._kActiveFontSize, |
|||
color: this.colorTween.evaluate(this.animation) |
|||
), |
|||
child: new Transform( |
|||
transform: Matrix3.makeAll(t, 0, 0, 0, t, 0, 0, 0, t), |
|||
alignment: Alignment.bottomCenter, |
|||
child: this.item.title |
|||
) |
|||
) |
|||
) |
|||
); |
|||
} |
|||
|
|||
Widget _buildShiftingLabel() { |
|||
return new Align( |
|||
alignment: Alignment.bottomCenter, |
|||
heightFactor: 1.0f, |
|||
child: new Container( |
|||
margin: EdgeInsets.only( |
|||
bottom: new FloatTween( |
|||
begin: 2.0f, |
|||
end: BottomNavigationBarUtils._kBottomMargin |
|||
).evaluate(this.animation) |
|||
), |
|||
child: new FadeTransition( |
|||
opacity: this.animation, |
|||
child: DefaultTextStyle.merge( |
|||
style: new TextStyle( |
|||
fontSize: BottomNavigationBarUtils._kActiveFontSize, |
|||
color: Colors.white |
|||
), |
|||
child: this.item.title |
|||
) |
|||
) |
|||
) |
|||
); |
|||
} |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
int size; |
|||
Widget label; |
|||
switch (this.type) { |
|||
case BottomNavigationBarType.fix: |
|||
size = 1; |
|||
label = this._buildFixedLabel(); |
|||
break; |
|||
case BottomNavigationBarType.shifting: |
|||
size = ((this.flex * 1000.0f) ?? 0.0f).round(); |
|||
label = this._buildShiftingLabel(); |
|||
break; |
|||
default: |
|||
throw new Exception("Unknown BottomNavigationBarType: " + this.type); |
|||
} |
|||
|
|||
return new Expanded( |
|||
flex: size, |
|||
child: new Stack( |
|||
children: new List<Widget> { |
|||
new InkResponse( |
|||
onTap: this.onTap == null ? (GestureTapCallback) null : () => { this.onTap(); }, |
|||
child: new Column( |
|||
crossAxisAlignment: CrossAxisAlignment.center, |
|||
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|||
mainAxisSize: MainAxisSize.min, |
|||
children: new List<Widget> {this._buildIcon(), label} |
|||
) |
|||
) |
|||
} |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _BottomNavigationBarState : TickerProviderStateMixin<BottomNavigationBar> { |
|||
public List<AnimationController> _controllers = new List<AnimationController> { }; |
|||
public List<CurvedAnimation> _animations; |
|||
|
|||
Queue<_Circle> _circles = new Queue<_Circle>(); |
|||
|
|||
Color _backgroundColor; |
|||
|
|||
static readonly Animatable<float> _flexTween = new FloatTween(begin: 1.0f, end: 1.5f); |
|||
|
|||
public _BottomNavigationBarState() { |
|||
} |
|||
|
|||
void _resetState() { |
|||
foreach (AnimationController controller in this._controllers) { |
|||
controller.dispose(); |
|||
} |
|||
|
|||
foreach (_Circle circle in this._circles) { |
|||
circle.dispose(); |
|||
} |
|||
|
|||
this._circles.Clear(); |
|||
|
|||
this._controllers = new List<AnimationController>(capacity: this.widget.items.Count); |
|||
for (int index = 0; index < this.widget.items.Count; index++) { |
|||
AnimationController controller = new AnimationController( |
|||
duration: ThemeUtils.kThemeAnimationDuration, |
|||
vsync: this |
|||
); |
|||
controller.addListener(this._rebuild); |
|||
this._controllers.Add(controller); |
|||
} |
|||
|
|||
this._animations = new List<CurvedAnimation>(capacity: this.widget.items.Count); |
|||
for (int index = 0; index < this.widget.items.Count; index++) { |
|||
this._animations.Add(new CurvedAnimation( |
|||
parent: this._controllers[index], |
|||
curve: Curves.fastOutSlowIn, |
|||
reverseCurve: Curves.fastOutSlowIn.flipped |
|||
)); |
|||
} |
|||
|
|||
this._controllers[this.widget.currentIndex].setValue(1.0f); |
|||
this._backgroundColor = this.widget.items[this.widget.currentIndex].backgroundColor; |
|||
} |
|||
|
|||
public override void initState() { |
|||
base.initState(); |
|||
this._resetState(); |
|||
} |
|||
|
|||
void _rebuild() { |
|||
this.setState(() => { }); |
|||
} |
|||
|
|||
public override void dispose() { |
|||
foreach (AnimationController controller in this._controllers) { |
|||
controller.dispose(); |
|||
} |
|||
|
|||
foreach (_Circle circle in this._circles) { |
|||
circle.dispose(); |
|||
} |
|||
|
|||
base.dispose(); |
|||
} |
|||
|
|||
public float _evaluateFlex(Animation<float> animation) { |
|||
return _flexTween.evaluate(animation); |
|||
} |
|||
|
|||
void _pushCircle(int index) { |
|||
if (this.widget.items[index].backgroundColor != null) { |
|||
_Circle circle = new _Circle( |
|||
state: this, |
|||
index: index, |
|||
color: this.widget.items[index].backgroundColor, |
|||
vsync: this |
|||
); |
|||
circle.controller.addStatusListener( |
|||
(AnimationStatus status) => { |
|||
switch (status) { |
|||
case AnimationStatus.completed: |
|||
this.setState(() => { |
|||
_Circle cir = this._circles.Dequeue(); |
|||
this._backgroundColor = cir.color; |
|||
cir.dispose(); |
|||
}); |
|||
break; |
|||
case AnimationStatus.dismissed: |
|||
case AnimationStatus.forward: |
|||
case AnimationStatus.reverse: |
|||
break; |
|||
} |
|||
} |
|||
); |
|||
this._circles.Enqueue(circle); |
|||
} |
|||
} |
|||
|
|||
public override void didUpdateWidget(StatefulWidget _oldWidget) { |
|||
base.didUpdateWidget(_oldWidget); |
|||
BottomNavigationBar oldWidget = _oldWidget as BottomNavigationBar; |
|||
if (this.widget.items.Count != oldWidget.items.Count) { |
|||
this._resetState(); |
|||
return; |
|||
} |
|||
|
|||
if (this.widget.currentIndex != oldWidget.currentIndex) { |
|||
switch (this.widget.type) { |
|||
case BottomNavigationBarType.fix: |
|||
break; |
|||
case BottomNavigationBarType.shifting: |
|||
this._pushCircle(this.widget.currentIndex); |
|||
break; |
|||
} |
|||
|
|||
this._controllers[oldWidget.currentIndex].reverse(); |
|||
this._controllers[this.widget.currentIndex].forward(); |
|||
} |
|||
else { |
|||
if (this._backgroundColor != this.widget.items[this.widget.currentIndex].backgroundColor) { |
|||
this._backgroundColor = this.widget.items[this.widget.currentIndex].backgroundColor; |
|||
} |
|||
} |
|||
} |
|||
|
|||
List<Widget> _createTiles() { |
|||
MaterialLocalizations localizations = MaterialLocalizations.of(this.context); |
|||
D.assert(localizations != null); |
|||
List<Widget> children = new List<Widget> { }; |
|||
switch (this.widget.type) { |
|||
case BottomNavigationBarType.fix: |
|||
ThemeData themeData = Theme.of(this.context); |
|||
TextTheme textTheme = themeData.textTheme; |
|||
Color themeColor; |
|||
switch (themeData.brightness) { |
|||
case Brightness.light: |
|||
themeColor = themeData.primaryColor; |
|||
break; |
|||
case Brightness.dark: |
|||
themeColor = themeData.accentColor; |
|||
break; |
|||
default: |
|||
throw new Exception("Unknown brightness: " + themeData.brightness); |
|||
} |
|||
|
|||
ColorTween colorTween = new ColorTween( |
|||
begin: textTheme.caption.color, |
|||
end: this.widget.fixedColor ?? themeColor |
|||
); |
|||
for (int i = 0; i < this.widget.items.Count; i += 1) { |
|||
int index = i; |
|||
children.Add( |
|||
new _BottomNavigationTile(this.widget.type, this.widget.items[i], this._animations[i], |
|||
this.widget.iconSize, |
|||
onTap: () => { |
|||
if (this.widget.onTap != null) { |
|||
this.widget.onTap(index); |
|||
} |
|||
}, |
|||
colorTween: colorTween, |
|||
selected: i == this.widget.currentIndex, |
|||
indexLabel: localizations.tabLabel(tabIndex: i + 1, tabCount: this.widget.items.Count) |
|||
) |
|||
); |
|||
} |
|||
|
|||
break; |
|||
case BottomNavigationBarType.shifting: |
|||
for (int i = 0; i < this.widget.items.Count; i += 1) { |
|||
int index = i; |
|||
children.Add( |
|||
new _BottomNavigationTile(this.widget.type, this.widget.items[i], this._animations[i], |
|||
this.widget.iconSize, |
|||
onTap: () => { |
|||
if (this.widget.onTap != null) { |
|||
this.widget.onTap(index); |
|||
} |
|||
}, |
|||
flex: |
|||
this._evaluateFlex(this._animations[i]), |
|||
selected: i == this.widget.currentIndex, |
|||
indexLabel: localizations.tabLabel(tabIndex: i + 1, tabCount: this.widget.items.Count) |
|||
) |
|||
); |
|||
} |
|||
|
|||
break; |
|||
} |
|||
|
|||
return children; |
|||
} |
|||
|
|||
Widget _createContainer(List<Widget> tiles) { |
|||
return DefaultTextStyle.merge( |
|||
overflow: TextOverflow.ellipsis, |
|||
child: new Row( |
|||
mainAxisAlignment: MainAxisAlignment.spaceBetween, |
|||
children: tiles |
|||
) |
|||
); |
|||
} |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
D.assert(WidgetsD.debugCheckHasDirectionality(context)); |
|||
D.assert(MaterialD.debugCheckHasMaterialLocalizations(context)); |
|||
|
|||
float additionalBottomPadding = |
|||
Mathf.Max(MediaQuery.of(context).padding.bottom - BottomNavigationBarUtils._kBottomMargin, 0.0f); |
|||
Color backgroundColor = null; |
|||
switch (this.widget.type) { |
|||
case BottomNavigationBarType.fix: |
|||
break; |
|||
case BottomNavigationBarType.shifting: |
|||
backgroundColor = this._backgroundColor; |
|||
break; |
|||
} |
|||
|
|||
return new Stack( |
|||
children: new List<Widget> { |
|||
Positioned.fill( |
|||
child: new Material( // Casts shadow.
|
|||
elevation: 8.0f, |
|||
color: backgroundColor |
|||
) |
|||
), |
|||
new ConstrainedBox( |
|||
constraints: new BoxConstraints( |
|||
minHeight: Constants.kBottomNavigationBarHeight + additionalBottomPadding), |
|||
child: new Stack( |
|||
children: new List<Widget> { |
|||
Positioned.fill( |
|||
child: new CustomPaint( |
|||
painter: new _RadialPainter( |
|||
circles: this._circles.ToList() |
|||
) |
|||
) |
|||
), |
|||
new Material( // Splashes.
|
|||
type: MaterialType.transparency, |
|||
child: new Padding( |
|||
padding: EdgeInsets.only(bottom: additionalBottomPadding), |
|||
child: MediaQuery.removePadding( |
|||
context: context, |
|||
removeBottom: true, |
|||
child: this._createContainer(this._createTiles()) |
|||
) |
|||
) |
|||
) |
|||
} |
|||
) |
|||
) |
|||
} |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _Circle { |
|||
public _Circle( |
|||
_BottomNavigationBarState state = null, |
|||
int? index = null, |
|||
Color color = null, |
|||
TickerProvider vsync = null |
|||
) { |
|||
D.assert(state != null); |
|||
D.assert(index != null); |
|||
D.assert(color != null); |
|||
this.state = state; |
|||
this.index = index; |
|||
this.color = color; |
|||
this.controller = new AnimationController( |
|||
duration: ThemeUtils.kThemeAnimationDuration, |
|||
vsync: vsync |
|||
); |
|||
this.animation = new CurvedAnimation( |
|||
parent: this.controller, |
|||
curve: Curves.fastOutSlowIn |
|||
); |
|||
this.controller.forward(); |
|||
} |
|||
|
|||
public readonly _BottomNavigationBarState state; |
|||
public readonly int? index; |
|||
public readonly Color color; |
|||
public readonly AnimationController controller; |
|||
public readonly CurvedAnimation animation; |
|||
|
|||
public float horizontalLeadingOffset { |
|||
get { |
|||
float weightSum(IEnumerable<Animation<float>> animations) { |
|||
return animations.Select(this.state._evaluateFlex).Sum(); |
|||
} |
|||
|
|||
float allWeights = weightSum(this.state._animations); |
|||
float leadingWeights = weightSum(this.state._animations.GetRange(0, this.index ?? 0)); |
|||
|
|||
return (leadingWeights + this.state._evaluateFlex(this.state._animations[this.index ?? 0]) / 2.0f) / |
|||
allWeights; |
|||
} |
|||
} |
|||
|
|||
public void dispose() { |
|||
this.controller.dispose(); |
|||
} |
|||
} |
|||
|
|||
class _RadialPainter : AbstractCustomPainter { |
|||
public _RadialPainter( |
|||
List<_Circle> circles |
|||
) { |
|||
D.assert(circles != null); |
|||
this.circles = circles; |
|||
} |
|||
|
|||
public readonly List<_Circle> circles; |
|||
|
|||
static float _maxRadius(Offset center, Size size) { |
|||
float maxX = Mathf.Max(center.dx, size.width - center.dx); |
|||
float maxY = Mathf.Max(center.dy, size.height - center.dy); |
|||
return Mathf.Sqrt(maxX * maxX + maxY * maxY); |
|||
} |
|||
|
|||
public override bool shouldRepaint(CustomPainter _oldPainter) { |
|||
_RadialPainter oldPainter = _oldPainter as _RadialPainter; |
|||
if (this.circles == oldPainter.circles) { |
|||
return false; |
|||
} |
|||
|
|||
if (this.circles.Count != oldPainter.circles.Count) { |
|||
return true; |
|||
} |
|||
|
|||
for (int i = 0; i < this.circles.Count; i += 1) { |
|||
if (this.circles[i] != oldPainter.circles[i]) { |
|||
return true; |
|||
} |
|||
} |
|||
|
|||
return false; |
|||
} |
|||
|
|||
public override void paint(Canvas canvas, Size size) { |
|||
foreach (_Circle circle in this.circles) { |
|||
Paint paint = new Paint(); |
|||
paint.color = circle.color; |
|||
Rect rect = Rect.fromLTWH(0.0f, 0.0f, size.width, size.height); |
|||
canvas.clipRect(rect); |
|||
float leftFraction = circle.horizontalLeadingOffset; |
|||
Offset center = new Offset(leftFraction * size.width, size.height / 2.0f); |
|||
FloatTween radiusTween = new FloatTween( |
|||
begin: 0.0f, |
|||
end: _maxRadius(center, size) |
|||
); |
|||
canvas.drawCircle( |
|||
center, |
|||
radiusTween.evaluate(circle.animation), |
|||
paint |
|||
); |
|||
} |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 6b8f793d1b8d4004b2c19c1c085752c3 |
|||
timeCreated: 1553161698 |
|
|||
using System; |
|||
using Unity.UIWidgets.foundation; |
|||
using Unity.UIWidgets.rendering; |
|||
using Unity.UIWidgets.scheduler; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.widgets; |
|||
|
|||
namespace Unity.UIWidgets.material { |
|||
class RadioUtils { |
|||
public const float _kOuterRadius = 8.0f; |
|||
public const float _kInnerRadius = 4.5f; |
|||
} |
|||
|
|||
public class Radio<T> : StatefulWidget where T : class { |
|||
public Radio( |
|||
Key key = null, |
|||
T value = null, |
|||
T groupValue = null, |
|||
ValueChanged<T> onChanged = null, |
|||
Color activeColor = null, |
|||
MaterialTapTargetSize? materialTapTargetSize = null |
|||
) : base(key: key) { |
|||
D.assert(value != null); |
|||
D.assert(groupValue != null); |
|||
D.assert(onChanged != null); |
|||
this.value = value; |
|||
this.groupValue = groupValue; |
|||
this.onChanged = onChanged; |
|||
this.activeColor = activeColor; |
|||
this.materialTapTargetSize = materialTapTargetSize; |
|||
} |
|||
|
|||
public readonly T value; |
|||
|
|||
public readonly T groupValue; |
|||
|
|||
public readonly ValueChanged<T> onChanged; |
|||
|
|||
public readonly Color activeColor; |
|||
|
|||
public readonly MaterialTapTargetSize? materialTapTargetSize; |
|||
|
|||
public override State createState() { |
|||
return new _RadioState<T>(); |
|||
} |
|||
} |
|||
|
|||
class _RadioState<T> : TickerProviderStateMixin<Radio<T>> where T : class { |
|||
bool _enabled { |
|||
get { return this.widget.onChanged != null; } |
|||
} |
|||
|
|||
Color _getInactiveColor(ThemeData themeData) { |
|||
return this._enabled ? themeData.unselectedWidgetColor : themeData.disabledColor; |
|||
} |
|||
|
|||
void _handleChanged(bool? selected) { |
|||
if (selected == true) { |
|||
this.widget.onChanged(this.widget.value); |
|||
} |
|||
} |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
D.assert(MaterialD.debugCheckHasMaterial(context)); |
|||
ThemeData themeData = Theme.of(context); |
|||
Size size; |
|||
switch (this.widget.materialTapTargetSize ?? themeData.materialTapTargetSize) { |
|||
case MaterialTapTargetSize.padded: |
|||
size = new Size(2 * Constants.kRadialReactionRadius + 8.0f, |
|||
2 * Constants.kRadialReactionRadius + 8.0f); |
|||
break; |
|||
case MaterialTapTargetSize.shrinkWrap: |
|||
size = new Size(2 * Constants.kRadialReactionRadius, 2 * Constants.kRadialReactionRadius); |
|||
break; |
|||
default: |
|||
throw new Exception("Unknown material tap target size"); |
|||
} |
|||
|
|||
BoxConstraints additionalConstraints = BoxConstraints.tight(size); |
|||
return new _RadioRenderObjectWidget( |
|||
selected: this.widget.value == this.widget.groupValue, |
|||
activeColor: this.widget.activeColor ?? themeData.toggleableActiveColor, |
|||
inactiveColor: this._getInactiveColor(themeData), |
|||
onChanged: this._enabled ? this._handleChanged : (ValueChanged<bool?>) null, |
|||
additionalConstraints: additionalConstraints, |
|||
vsync: this |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _RadioRenderObjectWidget : LeafRenderObjectWidget { |
|||
public _RadioRenderObjectWidget( |
|||
Key key = null, |
|||
bool? selected = null, |
|||
Color activeColor = null, |
|||
Color inactiveColor = null, |
|||
BoxConstraints additionalConstraints = null, |
|||
ValueChanged<bool?> onChanged = null, |
|||
TickerProvider vsync = null |
|||
) : base(key: key) { |
|||
D.assert(selected != null); |
|||
D.assert(activeColor != null); |
|||
D.assert(inactiveColor != null); |
|||
D.assert(additionalConstraints != null); |
|||
D.assert(vsync != null); |
|||
this.selected = selected; |
|||
this.activeColor = activeColor; |
|||
this.inactiveColor = inactiveColor; |
|||
this.additionalConstraints = additionalConstraints; |
|||
this.onChanged = onChanged; |
|||
this.vsync = vsync; |
|||
} |
|||
|
|||
public readonly bool? selected; |
|||
public readonly Color activeColor; |
|||
public readonly Color inactiveColor; |
|||
public readonly BoxConstraints additionalConstraints; |
|||
public readonly ValueChanged<bool?> onChanged; |
|||
public readonly TickerProvider vsync; |
|||
|
|||
public override RenderObject createRenderObject(BuildContext context) { |
|||
return new _RenderRadio( |
|||
value: this.selected, |
|||
activeColor: this.activeColor, |
|||
inactiveColor: this.inactiveColor, |
|||
onChanged: this.onChanged, |
|||
vsync: this.vsync, |
|||
additionalConstraints: this.additionalConstraints |
|||
); |
|||
} |
|||
|
|||
public override void updateRenderObject(BuildContext context, RenderObject _renderObject) { |
|||
_RenderRadio renderObject = _renderObject as _RenderRadio; |
|||
renderObject.value = this.selected; |
|||
renderObject.activeColor = this.activeColor; |
|||
renderObject.inactiveColor = this.inactiveColor; |
|||
renderObject.onChanged = this.onChanged; |
|||
renderObject.additionalConstraints = this.additionalConstraints; |
|||
renderObject.vsync = this.vsync; |
|||
} |
|||
} |
|||
|
|||
class _RenderRadio : RenderToggleable { |
|||
public _RenderRadio( |
|||
bool? value, |
|||
Color activeColor, |
|||
Color inactiveColor, |
|||
ValueChanged<bool?> onChanged, |
|||
BoxConstraints additionalConstraints, |
|||
TickerProvider vsync |
|||
) : base( |
|||
value: value, |
|||
tristate: false, |
|||
activeColor: activeColor, |
|||
inactiveColor: inactiveColor, |
|||
onChanged: onChanged, |
|||
additionalConstraints: additionalConstraints, |
|||
vsync: vsync |
|||
) { |
|||
} |
|||
|
|||
public override void paint(PaintingContext context, Offset offset) { |
|||
Canvas canvas = context.canvas; |
|||
|
|||
this.paintRadialReaction(canvas, offset, |
|||
new Offset(Constants.kRadialReactionRadius, Constants.kRadialReactionRadius)); |
|||
|
|||
Offset center = (offset & this.size).center; |
|||
Color radioColor = this.onChanged != null ? this.activeColor : this.inactiveColor; |
|||
|
|||
Paint paint = new Paint(); |
|||
paint.color = Color.lerp(this.inactiveColor, radioColor, this.position.value); |
|||
paint.style = PaintingStyle.stroke; |
|||
paint.strokeWidth = 2.0f; |
|||
canvas.drawCircle(center, RadioUtils._kOuterRadius, paint); |
|||
|
|||
if (!this.position.isDismissed) { |
|||
paint.style = PaintingStyle.fill; |
|||
canvas.drawCircle(center, RadioUtils._kInnerRadius * this.position.value, paint); |
|||
} |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 1328fb437a4047c49b51dfe3a2c3d106 |
|||
timeCreated: 1553154501 |
|
|||
using System.Collections.Generic; |
|||
using Unity.UIWidgets.ui; |
|||
using UnityEngine; |
|||
using Rect = Unity.UIWidgets.ui.Rect; |
|||
|
|||
namespace Unity.UIWidgets.painting { |
|||
public abstract class NotchedShape { |
|||
public NotchedShape() { |
|||
} |
|||
|
|||
public abstract Path getOuterPath(Rect host, Rect guest); |
|||
} |
|||
|
|||
public class CircularNotchedRectangle : NotchedShape { |
|||
public CircularNotchedRectangle() { |
|||
} |
|||
|
|||
public override Path getOuterPath(Rect host, Rect guest) { |
|||
if (!host.overlaps(guest)) { |
|||
Path path = new Path(); |
|||
path.addRect(host); |
|||
return path; |
|||
} |
|||
|
|||
float notchRadius = guest.width / 2.0f; |
|||
|
|||
|
|||
const float s1 = 15.0f; |
|||
const float s2 = 1.0f; |
|||
|
|||
float r = notchRadius; |
|||
float a = -1.0f * r - s2; |
|||
float b = host.top - guest.center.dy; |
|||
|
|||
float n2 = Mathf.Sqrt(b * b * r * r * (a * a + b * b - r * r)); |
|||
float p2xA = ((a * r * r) - n2) / (a * a + b * b); |
|||
float p2xB = ((a * r * r) + n2) / (a * a + b * b); |
|||
float p2yA = Mathf.Sqrt(r * r - p2xA * p2xA); |
|||
float p2yB = Mathf.Sqrt(r * r - p2xB * p2xB); |
|||
|
|||
List<Offset> p = new List<Offset>(6); |
|||
|
|||
p[0] = new Offset(a - s1, b); |
|||
p[1] = new Offset(a, b); |
|||
float cmp = b < 0 ? -1.0f : 1.0f; |
|||
p[2] = cmp * p2yA > cmp * p2yB ? new Offset(p2xA, p2yA) : new Offset(p2xB, p2yB); |
|||
|
|||
p[3] = new Offset(-1.0f * p[2].dx, p[2].dy); |
|||
p[4] = new Offset(-1.0f * p[1].dx, p[1].dy); |
|||
p[5] = new Offset(-1.0f * p[0].dx, p[0].dy); |
|||
|
|||
for (int i = 0; i < p.Count; i += 1) { |
|||
p[i] += guest.center; |
|||
} |
|||
|
|||
Path ret = new Path(); |
|||
ret.moveTo(host.left, host.top); |
|||
ret.lineTo(p[0].dx, p[0].dy); |
|||
ret.quadTo(p[1].dx, p[1].dy, p[2].dx, p[2].dy); |
|||
// TODO: replace this lineTo() with arcToPoint when arcToPoint is ready
|
|||
ret.lineTo(p[3].dx, p[3].dy); |
|||
// ret.arcToPoint(p[3], p[3], radius: Radius.circular(notchRadius), clockwise: false);
|
|||
ret.quadTo(p[4].dx, p[4].dy, p[5].dx, p[5].dy); |
|||
ret.lineTo(host.right, host.top); |
|||
ret.lineTo(host.right, host.bottom); |
|||
ret.lineTo(host.left, host.bottom); |
|||
ret.close(); |
|||
return ret; |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: c89c524fa7c242aa91900b63841be8b3 |
|||
timeCreated: 1553153571 |
|
|||
using UnityEngine; |
|||
|
|||
namespace Unity.UIWidgets.ui { |
|||
public static class ShadowUtils { |
|||
public const bool _drawShadowFlag = false; |
|||
|
|||
public const float kAmbientHeightFactor = 1.0f / 128.0f; |
|||
public const float kAmbientGeomFactor = 64.0f; |
|||
|
|||
public const float kBlurSigmaScale = 0.57735f; |
|||
|
|||
public const float kMaxAmbientRadius = 300 * kAmbientHeightFactor * kAmbientGeomFactor; |
|||
|
|||
public static float divideAndPin(float numer, float denom, float min, float max) { |
|||
return (numer / denom).clamp(min, max); |
|||
} |
|||
|
|||
public static float ambientBlurRadius(float height) { |
|||
return Mathf.Min(height * kAmbientHeightFactor * kAmbientGeomFactor, kMaxAmbientRadius); |
|||
} |
|||
|
|||
public static float ambientRecipAlpha(float height) { |
|||
return 1.0f + Mathf.Max(height * kAmbientHeightFactor, 0.0f); |
|||
} |
|||
|
|||
public static float spotBlurRadius(float occluderZ, float lightZ, float lightRadius) { |
|||
return lightRadius * divideAndPin(occluderZ, lightZ - occluderZ, 0.0f, 0.95f); |
|||
} |
|||
|
|||
public static void getSpotParams(float occluderZ, float lightX, float lightY, float lightZ, |
|||
float lightRadius, |
|||
ref float blurRadius, ref float scale, ref Vector2 translate) { |
|||
float zRatio = divideAndPin(occluderZ, lightZ - occluderZ, 0.0f, 0.95f); |
|||
blurRadius = lightRadius * zRatio; |
|||
scale = divideAndPin(lightZ, lightZ - occluderZ, 1.0f, 1.95f); |
|||
translate = new Vector2(-zRatio * lightX, -zRatio * lightY); |
|||
} |
|||
|
|||
public static float convertRadiusToSigma(float radius) { |
|||
return radius > 0 ? kBlurSigmaScale * radius + 0.5f : 0.0f; |
|||
} |
|||
|
|||
public static void computeTonalColors(Color inAmbientColor, Color inSpotColor, |
|||
ref Color outAmbientColor, ref Color outSpotColor) { |
|||
outAmbientColor = Color.fromARGB(inAmbientColor.alpha, 0, 0, 0); |
|||
outSpotColor = inSpotColor; |
|||
} |
|||
|
|||
public static bool getSpotShadowTransform(Vector3 lightPos, float lightRadius, Matrix3 ctm, |
|||
Vector3 zPlaneParams, Rect pathBounds, Matrix3 shadowTransform, ref float radius) { |
|||
float heightFunc(float x, float y) { |
|||
return zPlaneParams.x * x + zPlaneParams.y * y + zPlaneParams.z; |
|||
} |
|||
|
|||
float occluderHeight = heightFunc(pathBounds.center.dx, pathBounds.center.dy); |
|||
|
|||
if (!ctm.hasPerspective()) { |
|||
float scale = 0.0f; |
|||
Vector2 translate = new Vector2(); |
|||
getSpotParams(occluderHeight, lightPos.x, lightPos.y, lightPos.z, lightRadius, ref radius, ref scale, |
|||
ref translate); |
|||
shadowTransform.setScaleTranslate(scale, scale, translate.x, translate.y); |
|||
shadowTransform.preConcat(ctm); |
|||
} |
|||
else { |
|||
if (pathBounds.width.valueNearlyZero() || pathBounds.height.valueNearlyZero()) { |
|||
return false; |
|||
} |
|||
|
|||
Offset[] pts = ctm.mapRectToQuad(pathBounds); |
|||
if (!MathUtils.isConvexPolygon(pts, 4)) { |
|||
return false; |
|||
} |
|||
|
|||
Vector3[] pts3D = new Vector3[4]; |
|||
float z = heightFunc(pathBounds.left, pathBounds.top); |
|||
pts3D[0] = new Vector3(pts[0].dx, pts[0].dy, z); |
|||
z = heightFunc(pathBounds.right, pathBounds.top); |
|||
pts3D[1] = new Vector3(pts[1].dx, pts[1].dy, z); |
|||
z = heightFunc(pathBounds.right, pathBounds.bottom); |
|||
pts3D[2] = new Vector3(pts[2].dx, pts[2].dy, z); |
|||
z = heightFunc(pathBounds.left, pathBounds.bottom); |
|||
pts3D[3] = new Vector3(pts[3].dx, pts[3].dy, z); |
|||
|
|||
for (int i = 0; i < 4; i++) { |
|||
float dz = lightPos.z - pts3D[i].z; |
|||
if (dz.valueNearlyZero()) { |
|||
return false; |
|||
} |
|||
|
|||
float zRatio = pts3D[i].z / dz; |
|||
pts3D[i].x -= (lightPos.x - pts3D[i].x) * zRatio; |
|||
pts3D[i].y -= (lightPos.y - pts3D[i].y) * zRatio; |
|||
pts3D[i].z = 1f; |
|||
} |
|||
|
|||
Vector3 h0 = Vector3.Cross(Vector3.Cross(pts3D[1], pts3D[0]), Vector3.Cross(pts3D[2], pts3D[3])); |
|||
Vector3 h1 = Vector3.Cross(Vector3.Cross(pts3D[0], pts3D[3]), Vector3.Cross(pts3D[1], pts3D[2])); |
|||
Vector3 h2 = Vector3.Cross(Vector3.Cross(pts3D[0], pts3D[2]), Vector3.Cross(pts3D[1], pts3D[3])); |
|||
|
|||
if (h2.z.valueNearlyZero()) { |
|||
return false; |
|||
} |
|||
|
|||
Vector3 v = pts3D[3] - pts3D[0]; |
|||
Vector3 w = h0 - pts3D[0]; |
|||
float perpDot = v.x * w.y - v.y * w.x; |
|||
if (perpDot > 0) { |
|||
h0 = -h0; |
|||
} |
|||
|
|||
v = pts3D[1] - pts3D[0]; |
|||
perpDot = v.x * w.y - v.y * w.x; |
|||
if (perpDot < 0) { |
|||
h1 = -h1; |
|||
} |
|||
|
|||
shadowTransform.setAll(h0.x / h2.z, h1.x / h2.z, h2.x / h2.z, |
|||
h0.y / h2.z, h1.y / h2.z, h2.y / h2.z, |
|||
h0.z / h2.z, h1.z / h2.z, 1); |
|||
|
|||
Matrix3 toHomogeneous = Matrix3.I(); |
|||
float xScale = 2.0f / (pathBounds.right - pathBounds.left); |
|||
float yScale = 2.0f / (pathBounds.bottom - pathBounds.top); |
|||
|
|||
toHomogeneous.setAll(xScale, 0, -xScale * pathBounds.left - 1, |
|||
0, yScale, -yScale * pathBounds.top - 1, |
|||
0, 0, 1); |
|||
|
|||
shadowTransform.preConcat(toHomogeneous); |
|||
|
|||
radius = spotBlurRadius(occluderHeight, lightPos.z, lightRadius); |
|||
} |
|||
|
|||
return true; |
|||
} |
|||
|
|||
public static void drawShadow(Canvas canvas, Path path, Vector3 zPlaneParams, Vector3 devLightPos, |
|||
float lightRadius, Color ambientColor, Color spotColor, int flags) { |
|||
if (!_drawShadowFlag) { |
|||
return; |
|||
} |
|||
|
|||
Matrix3 viewMatrix = canvas.getTotalMatrix(); |
|||
|
|||
//ambient light
|
|||
Path devSpacePath = path.transform(viewMatrix); |
|||
float devSpaceOutset = ambientBlurRadius(zPlaneParams.z); |
|||
float oneOverA = ambientRecipAlpha(zPlaneParams.z); |
|||
float blurRadius = 0.5f * devSpaceOutset * oneOverA; |
|||
float strokeWidth = 0.5f * (devSpaceOutset - blurRadius); |
|||
|
|||
Paint paint = new Paint {color = ambientColor, strokeWidth = strokeWidth, style = PaintingStyle.fill}; |
|||
|
|||
canvas.save(); |
|||
canvas.setMatrix(Matrix3.I()); |
|||
float sigma = convertRadiusToSigma(blurRadius); |
|||
paint.maskFilter = MaskFilter.blur(BlurStyle.normal, sigma); |
|||
canvas.drawPath(devSpacePath, paint); |
|||
canvas.restore(); |
|||
|
|||
//spot light
|
|||
Matrix3 shadowMatrix = Matrix3.I(); |
|||
float radius = 0.0f; |
|||
|
|||
if (!getSpotShadowTransform(devLightPos, lightRadius, viewMatrix, zPlaneParams, path.getBounds(), |
|||
shadowMatrix, ref radius)) { |
|||
return; |
|||
} |
|||
|
|||
canvas.save(); |
|||
canvas.setMatrix(shadowMatrix); |
|||
Paint paint2 = new Paint {color = spotColor}; |
|||
float sigma2 = convertRadiusToSigma(radius); |
|||
paint2.maskFilter = MaskFilter.blur(BlurStyle.normal, sigma2); |
|||
canvas.drawPath(path, paint2); |
|||
|
|||
canvas.restore(); |
|||
} |
|||
} |
|||
} |
|
|||
using Unity.UIWidgets.foundation; |
|||
using Unity.UIWidgets.ui; |
|||
|
|||
namespace Unity.UIWidgets.widgets { |
|||
public class BottomNavigationBarItem { |
|||
public BottomNavigationBarItem( |
|||
Widget icon = null, |
|||
Widget title = null, |
|||
Widget activeIcon = null, |
|||
Color backgroundColor = null |
|||
) { |
|||
D.assert(icon != null); |
|||
this.icon = icon; |
|||
this.activeIcon = activeIcon ?? icon; |
|||
this.title = title; |
|||
this.backgroundColor = backgroundColor; |
|||
} |
|||
|
|||
public readonly Widget icon; |
|||
|
|||
public readonly Widget activeIcon; |
|||
|
|||
public readonly Widget title; |
|||
|
|||
public readonly Color backgroundColor; |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 7000f1f897684e08a0831ca5d920589f |
|||
timeCreated: 1553162159 |
|
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using Unity.UIWidgets.animation; |
|||
using Unity.UIWidgets.foundation; |
|||
using Unity.UIWidgets.gestures; |
|||
using Unity.UIWidgets.material; |
|||
using Unity.UIWidgets.painting; |
|||
using Unity.UIWidgets.rendering; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.widgets; |
|||
using UnityEngine; |
|||
using Image = Unity.UIWidgets.widgets.Image; |
|||
using Material = Unity.UIWidgets.material.Material; |
|||
|
|||
namespace UIWidgetsGallery.gallery { |
|||
class BackdropDemoConstants { |
|||
public static readonly List<Category> allCategories = new List<Category> { |
|||
new Category( |
|||
title: "Accessories", |
|||
assets: new List<string> { |
|||
"products/belt", |
|||
"products/earrings", |
|||
"products/backpack", |
|||
"products/hat", |
|||
"products/scarf", |
|||
"products/sunnies" |
|||
} |
|||
), |
|||
new Category( |
|||
title: "Blue", |
|||
assets: new List<string> { |
|||
"products/backpack", |
|||
"products/cup", |
|||
"products/napkins", |
|||
"products/top" |
|||
} |
|||
), |
|||
new Category( |
|||
title: "Cold Weather", |
|||
assets: new List<string> { |
|||
"products/jacket", |
|||
"products/jumper", |
|||
"products/scarf", |
|||
"products/sweater", |
|||
"products/sweats" |
|||
} |
|||
), |
|||
new Category( |
|||
title: "Home", |
|||
assets: new List<string> { |
|||
"products/cup", |
|||
"products/napkins", |
|||
"products/planters", |
|||
"products/table", |
|||
"products/teaset" |
|||
} |
|||
), |
|||
new Category( |
|||
title: "Tops", |
|||
assets: new List<string> { |
|||
"products/jumper", |
|||
"products/shirt", |
|||
"products/sweater", |
|||
"products/top" |
|||
} |
|||
), |
|||
new Category( |
|||
title: "Everything", |
|||
assets: new List<string> { |
|||
"products/backpack", |
|||
"products/belt", |
|||
"products/cup", |
|||
"products/dress", |
|||
"products/earrings", |
|||
"products/flatwear", |
|||
"products/hat", |
|||
"products/jacket", |
|||
"products/jumper", |
|||
"products/napkins", |
|||
"products/planters", |
|||
"products/scarf", |
|||
"products/shirt", |
|||
"products/sunnies", |
|||
"products/sweater", |
|||
"products/sweats", |
|||
"products/table", |
|||
"products/teaset", |
|||
"products/top" |
|||
} |
|||
), |
|||
}; |
|||
} |
|||
|
|||
public class Category { |
|||
public Category(string title = null, List<string> assets = null) { |
|||
this.title = title; |
|||
this.assets = assets; |
|||
} |
|||
|
|||
public readonly string title; |
|||
public readonly List<string> assets; |
|||
|
|||
public override string ToString() { |
|||
return $"{this.GetType()}('{this.title}')"; |
|||
} |
|||
} |
|||
|
|||
|
|||
public class CategoryView : StatelessWidget { |
|||
public CategoryView(Key key = null, Category category = null) : base(key: key) { |
|||
this.category = category; |
|||
} |
|||
|
|||
public readonly Category category; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
ThemeData theme = Theme.of(context); |
|||
return new ListView( |
|||
key: new PageStorageKey<Category>(this.category), |
|||
padding: EdgeInsets.symmetric( |
|||
vertical: 16.0f, |
|||
horizontal: 64.0f |
|||
), |
|||
children: this.category.assets.Select<string, Widget>((string asset) => { |
|||
return new Column( |
|||
crossAxisAlignment: CrossAxisAlignment.stretch, |
|||
children: new List<Widget> { |
|||
new Card( |
|||
child: new Container( |
|||
width: 144.0f, |
|||
alignment: Alignment.center, |
|||
child: new Column( |
|||
children: new List<Widget> { |
|||
Image.asset( |
|||
asset, |
|||
fit: BoxFit.contain |
|||
), |
|||
new Container( |
|||
padding: EdgeInsets.only(bottom: 16.0f), |
|||
alignment: Alignment.center, |
|||
child: new Text( |
|||
asset, |
|||
style: theme.textTheme.caption |
|||
) |
|||
), |
|||
} |
|||
) |
|||
) |
|||
), |
|||
new SizedBox(height: 24.0f) |
|||
} |
|||
); |
|||
}).ToList() |
|||
); |
|||
} |
|||
} |
|||
|
|||
public class BackdropPanel : StatelessWidget { |
|||
public BackdropPanel( |
|||
Key key = null, |
|||
VoidCallback onTap = null, |
|||
GestureDragUpdateCallback onVerticalDragUpdate = null, |
|||
GestureDragEndCallback onVerticalDragEnd = null, |
|||
Widget title = null, |
|||
Widget child = null |
|||
) : base(key: key) { |
|||
this.onTap = onTap; |
|||
this.onVerticalDragUpdate = onVerticalDragUpdate; |
|||
this.onVerticalDragEnd = onVerticalDragEnd; |
|||
this.title = title; |
|||
this.child = child; |
|||
} |
|||
|
|||
public readonly VoidCallback onTap; |
|||
public readonly GestureDragUpdateCallback onVerticalDragUpdate; |
|||
public readonly GestureDragEndCallback onVerticalDragEnd; |
|||
public readonly Widget title; |
|||
public readonly Widget child; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
ThemeData theme = Theme.of(context); |
|||
return new Material( |
|||
elevation: 2.0f, |
|||
borderRadius: BorderRadius.only( |
|||
topLeft: Radius.circular(16.0f), |
|||
topRight: Radius.circular(16.0f) |
|||
), |
|||
child: new Column( |
|||
crossAxisAlignment: CrossAxisAlignment.stretch, |
|||
children: new List<Widget> { |
|||
new GestureDetector( |
|||
behavior: HitTestBehavior.opaque, |
|||
onVerticalDragUpdate: this.onVerticalDragUpdate, |
|||
onVerticalDragEnd: this.onVerticalDragEnd, |
|||
onTap: this.onTap != null ? (GestureTapCallback) (() => { this.onTap(); }) : null, |
|||
child: new Container( |
|||
height: 48.0f, |
|||
padding: EdgeInsets.only(left: 16.0f), |
|||
alignment: Alignment.centerLeft, |
|||
child: new DefaultTextStyle( |
|||
style: theme.textTheme.subhead, |
|||
child: new Tooltip( |
|||
message: "Tap to dismiss", |
|||
child: this.title |
|||
) |
|||
) |
|||
) |
|||
), |
|||
new Divider(height: 1.0f), |
|||
new Expanded(child: this.child) |
|||
} |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
public class BackdropTitle : AnimatedWidget { |
|||
public BackdropTitle( |
|||
Key key = null, |
|||
Listenable listenable = null |
|||
) : base(key: key, listenable: listenable) { |
|||
} |
|||
|
|||
protected override Widget build(BuildContext context) { |
|||
Animation<float> animation = (Animation<float>) this.listenable; |
|||
return new DefaultTextStyle( |
|||
style: Theme.of(context).primaryTextTheme.title, |
|||
softWrap: false, |
|||
overflow: TextOverflow.ellipsis, |
|||
child: new Stack( |
|||
children: new List<Widget> { |
|||
new Opacity( |
|||
opacity: new CurvedAnimation( |
|||
parent: new ReverseAnimation(animation), |
|||
curve: new Interval(0.5f, 1.0f) |
|||
).value, |
|||
child: new Text("Select a Category") |
|||
), |
|||
new Opacity( |
|||
opacity: new CurvedAnimation( |
|||
parent: animation, |
|||
curve: new Interval(0.5f, 1.0f) |
|||
).value, |
|||
child: new Text("Asset Viewer") |
|||
), |
|||
} |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
public class BackdropDemo : StatefulWidget { |
|||
public const string routeName = "/material/backdrop"; |
|||
|
|||
public override State createState() { |
|||
return new _BackdropDemoState(); |
|||
} |
|||
} |
|||
|
|||
class _BackdropDemoState : SingleTickerProviderStateMixin<BackdropDemo> { |
|||
GlobalKey _backdropKey = GlobalKey.key(debugLabel: "Backdrop"); |
|||
AnimationController _controller; |
|||
Category _category = BackdropDemoConstants.allCategories[0]; |
|||
|
|||
public override void initState() { |
|||
base.initState(); |
|||
this._controller = new AnimationController( |
|||
duration: new TimeSpan(0, 0, 0, 0, 300), |
|||
value: 1.0f, |
|||
vsync: this |
|||
); |
|||
} |
|||
|
|||
public override void dispose() { |
|||
this._controller.dispose(); |
|||
base.dispose(); |
|||
} |
|||
|
|||
void _changeCategory(Category category) { |
|||
this.setState(() => { |
|||
this._category = category; |
|||
this._controller.fling(velocity: 2.0f); |
|||
}); |
|||
} |
|||
|
|||
bool _backdropPanelVisible { |
|||
get { |
|||
AnimationStatus status = this._controller.status; |
|||
return status == AnimationStatus.completed || status == AnimationStatus.forward; |
|||
} |
|||
} |
|||
|
|||
void _toggleBackdropPanelVisibility() { |
|||
this._controller.fling(velocity: this._backdropPanelVisible ? -2.0f : 2.0f); |
|||
} |
|||
|
|||
float? _backdropHeight { |
|||
get { |
|||
RenderBox renderBox = (RenderBox) this._backdropKey.currentContext.findRenderObject(); |
|||
return renderBox.size.height; |
|||
} |
|||
} |
|||
|
|||
|
|||
void _handleDragUpdate(DragUpdateDetails details) { |
|||
if (this._controller.isAnimating || this._controller.status == AnimationStatus.completed) { |
|||
return; |
|||
} |
|||
|
|||
this._controller.setValue(this._controller.value - |
|||
details.primaryDelta / (this._backdropHeight ?? details.primaryDelta) ?? 0.0f); |
|||
} |
|||
|
|||
void _handleDragEnd(DragEndDetails details) { |
|||
if (this._controller.isAnimating || this._controller.status == AnimationStatus.completed) { |
|||
return; |
|||
} |
|||
|
|||
float? flingVelocity = details.velocity.pixelsPerSecond.dy / this._backdropHeight; |
|||
if (flingVelocity < 0.0f) { |
|||
this._controller.fling(velocity: Mathf.Max(2.0f, -flingVelocity ?? 0.0f)); |
|||
} |
|||
else if (flingVelocity > 0.0f) { |
|||
this._controller.fling(velocity: Mathf.Min(-2.0f, -flingVelocity ?? 0.0f)); |
|||
} |
|||
else { |
|||
this._controller.fling(velocity: this._controller.value < 0.5f ? -2.0f : 2.0f); |
|||
} |
|||
} |
|||
|
|||
Widget _buildStack(BuildContext context, BoxConstraints constraints) { |
|||
const float panelTitleHeight = 48.0f; |
|||
Size panelSize = constraints.biggest; |
|||
float panelTop = panelSize.height - panelTitleHeight; |
|||
|
|||
Animation<RelativeRect> panelAnimation = this._controller.drive( |
|||
new RelativeRectTween( |
|||
begin: RelativeRect.fromLTRB( |
|||
0.0f, |
|||
panelTop - MediaQuery.of(context).padding.bottom, |
|||
0.0f, |
|||
panelTop - panelSize.height |
|||
), |
|||
end: RelativeRect.fromLTRB(0.0f, 0.0f, 0.0f, 0.0f) |
|||
) |
|||
); |
|||
|
|||
ThemeData theme = Theme.of(context); |
|||
List<Widget> backdropItems = BackdropDemoConstants.allCategories.Select<Category, Widget>( |
|||
(Category category) => { |
|||
bool selected = category == this._category; |
|||
return new Material( |
|||
shape: new RoundedRectangleBorder( |
|||
borderRadius: BorderRadius.all(Radius.circular(4.0f)) |
|||
), |
|||
color: selected |
|||
? Colors.white.withOpacity(0.25f) |
|||
: Colors.transparent, |
|||
child: new ListTile( |
|||
title: new Text(category.title), |
|||
selected: selected, |
|||
onTap: () => { this._changeCategory(category); } |
|||
) |
|||
); |
|||
}).ToList(); |
|||
|
|||
return new Container( |
|||
key: this._backdropKey, |
|||
color: theme.primaryColor, |
|||
child: new Stack( |
|||
children: new List<Widget> { |
|||
new ListTileTheme( |
|||
iconColor: theme.primaryIconTheme.color, |
|||
textColor: theme.primaryTextTheme.title.color.withOpacity(0.6f), |
|||
selectedColor: theme.primaryTextTheme.title.color, |
|||
child: new Padding( |
|||
padding: EdgeInsets.symmetric(horizontal: 16.0f), |
|||
child: new Column( |
|||
crossAxisAlignment: CrossAxisAlignment.stretch, |
|||
children: backdropItems |
|||
) |
|||
) |
|||
), |
|||
new PositionedTransition( |
|||
rect: panelAnimation, |
|||
child: new BackdropPanel( |
|||
onTap: this._toggleBackdropPanelVisibility, |
|||
onVerticalDragUpdate: this._handleDragUpdate, |
|||
onVerticalDragEnd: this._handleDragEnd, |
|||
title: new Text(this._category.title), |
|||
child: new CategoryView(category: this._category) |
|||
) |
|||
), |
|||
} |
|||
) |
|||
); |
|||
} |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
return new Scaffold( |
|||
appBar: new AppBar( |
|||
elevation: 0.0f, |
|||
title: new BackdropTitle( |
|||
listenable: this._controller.view |
|||
), |
|||
actions: new List<Widget> { |
|||
new IconButton( |
|||
onPressed: this._toggleBackdropPanelVisibility, |
|||
icon: new AnimatedIcon( |
|||
icon: AnimatedIcons.close_menu, |
|||
progress: this._controller.view |
|||
) |
|||
) |
|||
} |
|||
), |
|||
body: new LayoutBuilder( |
|||
builder: this._buildStack |
|||
) |
|||
); |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 98bee0a7e51f4f2d9c8670daf147a15f |
|||
timeCreated: 1553145970 |
|
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using Unity.UIWidgets.foundation; |
|||
using Unity.UIWidgets.gestures; |
|||
using Unity.UIWidgets.material; |
|||
using Unity.UIWidgets.painting; |
|||
using Unity.UIWidgets.rendering; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.widgets; |
|||
using UnityEngine; |
|||
using Canvas = Unity.UIWidgets.ui.Canvas; |
|||
using Color = Unity.UIWidgets.ui.Color; |
|||
using Material = Unity.UIWidgets.material.Material; |
|||
using Rect = Unity.UIWidgets.ui.Rect; |
|||
|
|||
namespace UIWidgetsGallery.gallery { |
|||
public class BottomAppBarDemo : StatefulWidget { |
|||
public const string routeName = "/material/bottom_app_bar"; |
|||
|
|||
public override State createState() { |
|||
return new _BottomAppBarDemoState(); |
|||
} |
|||
} |
|||
|
|||
|
|||
class _BottomAppBarDemoState : State<BottomAppBarDemo> { |
|||
static readonly GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>.key(); |
|||
|
|||
|
|||
static readonly _ChoiceValue<Widget> kNoFab = new _ChoiceValue<Widget>( |
|||
title: "None", |
|||
label: "do not show a floating action button", |
|||
value: null |
|||
); |
|||
|
|||
static readonly _ChoiceValue<Widget> kCircularFab = new _ChoiceValue<Widget>( |
|||
title: "Circular", |
|||
label: "circular floating action button", |
|||
value: new FloatingActionButton( |
|||
onPressed: _showSnackbar, |
|||
child: new Icon(Icons.add), |
|||
backgroundColor: Colors.orange |
|||
) |
|||
); |
|||
|
|||
static readonly _ChoiceValue<Widget> kDiamondFab = new _ChoiceValue<Widget>( |
|||
title: "Diamond", |
|||
label: "diamond shape floating action button", |
|||
value: new _DiamondFab( |
|||
onPressed: _showSnackbar, |
|||
child: new Icon(Icons.add) |
|||
) |
|||
); |
|||
|
|||
|
|||
static readonly _ChoiceValue<bool> kShowNotchTrue = new _ChoiceValue<bool>( |
|||
title: "On", |
|||
label: "show bottom appbar notch", |
|||
value: true |
|||
); |
|||
|
|||
static readonly _ChoiceValue<bool> kShowNotchFalse = new _ChoiceValue<bool>( |
|||
title: "Off", |
|||
label: "do not show bottom appbar notch", |
|||
value: false |
|||
); |
|||
|
|||
|
|||
static readonly _ChoiceValue<FloatingActionButtonLocation> kFabEndDocked = |
|||
new _ChoiceValue<FloatingActionButtonLocation>( |
|||
title: "Attached - End", |
|||
label: "floating action button is docked at the end of the bottom app bar", |
|||
value: FloatingActionButtonLocation.endDocked |
|||
); |
|||
|
|||
static readonly _ChoiceValue<FloatingActionButtonLocation> kFabCenterDocked = |
|||
new _ChoiceValue<FloatingActionButtonLocation>( |
|||
title: "Attached - Center", |
|||
label: "floating action button is docked at the center of the bottom app bar", |
|||
value: FloatingActionButtonLocation.centerDocked |
|||
); |
|||
|
|||
static readonly _ChoiceValue<FloatingActionButtonLocation> kFabEndFloat = |
|||
new _ChoiceValue<FloatingActionButtonLocation>( |
|||
title: "Free - End", |
|||
label: "floating action button floats above the end of the bottom app bar", |
|||
value: FloatingActionButtonLocation.endFloat |
|||
); |
|||
|
|||
static readonly _ChoiceValue<FloatingActionButtonLocation> kFabCenterFloat = |
|||
new _ChoiceValue<FloatingActionButtonLocation>( |
|||
title: "Free - Center", |
|||
label: "floating action button is floats above the center of the bottom app bar", |
|||
value: FloatingActionButtonLocation.centerFloat |
|||
); |
|||
|
|||
static void _showSnackbar() { |
|||
const string text = |
|||
"When the Scaffold's floating action button location changes, " + |
|||
"the floating action button animates to its new position." + |
|||
"The BottomAppBar adapts its shape appropriately."; |
|||
_scaffoldKey.currentState.showSnackBar( |
|||
new SnackBar(content: new Text(text)) |
|||
); |
|||
} |
|||
|
|||
|
|||
static readonly List<_NamedColor> kBabColors = new List<_NamedColor> { |
|||
new _NamedColor(null, "Clear"), |
|||
new _NamedColor(new Color(0xFFFFC100), "Orange"), |
|||
new _NamedColor(new Color(0xFF91FAFF), "Light Blue"), |
|||
new _NamedColor(new Color(0xFF00D1FF), "Cyan"), |
|||
new _NamedColor(new Color(0xFF00BCFF), "Cerulean"), |
|||
new _NamedColor(new Color(0xFF009BEE), "Blue") |
|||
}; |
|||
|
|||
_ChoiceValue<Widget> _fabShape = kCircularFab; |
|||
_ChoiceValue<bool> _showNotch = kShowNotchTrue; |
|||
_ChoiceValue<FloatingActionButtonLocation> _fabLocation = kFabEndDocked; |
|||
Color _babColor = kBabColors.First().color; |
|||
|
|||
void _onShowNotchChanged(_ChoiceValue<bool> value) { |
|||
this.setState(() => { this._showNotch = value; }); |
|||
} |
|||
|
|||
void _onFabShapeChanged(_ChoiceValue<Widget> value) { |
|||
this.setState(() => { this._fabShape = value; }); |
|||
} |
|||
|
|||
void _onFabLocationChanged(_ChoiceValue<FloatingActionButtonLocation> value) { |
|||
this.setState(() => { this._fabLocation = value; }); |
|||
} |
|||
|
|||
void _onBabColorChanged(Color value) { |
|||
this.setState(() => { this._babColor = value; }); |
|||
} |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
return new Scaffold( |
|||
key: _scaffoldKey, |
|||
appBar: new AppBar( |
|||
title: new Text("Bottom app bar"), |
|||
elevation: 0.0f, |
|||
actions: new List<Widget> { |
|||
new MaterialDemoDocumentationButton(BottomAppBarDemo.routeName), |
|||
new IconButton( |
|||
icon: new Icon(Icons.sentiment_very_satisfied), |
|||
onPressed: () => { |
|||
this.setState(() => { |
|||
this._fabShape = this._fabShape == kCircularFab ? kDiamondFab : kCircularFab; |
|||
}); |
|||
} |
|||
) |
|||
} |
|||
), |
|||
body: new ListView( |
|||
padding: EdgeInsets.only(bottom: 88.0f), |
|||
children: new List<Widget> { |
|||
new _AppBarDemoHeading("FAB Shape"), |
|||
|
|||
new _RadioItem<Widget>(kCircularFab, this._fabShape, this._onFabShapeChanged), |
|||
new _RadioItem<Widget>(kDiamondFab, this._fabShape, this._onFabShapeChanged), |
|||
new _RadioItem<Widget>(kNoFab, this._fabShape, this._onFabShapeChanged), |
|||
|
|||
new Divider(), |
|||
new _AppBarDemoHeading("Notch"), |
|||
|
|||
new _RadioItem<bool>(kShowNotchTrue, this._showNotch, this._onShowNotchChanged), |
|||
new _RadioItem<bool>(kShowNotchFalse, this._showNotch, this._onShowNotchChanged), |
|||
|
|||
new Divider(), |
|||
new _AppBarDemoHeading("FAB Position"), |
|||
|
|||
new _RadioItem<FloatingActionButtonLocation>(kFabEndDocked, this._fabLocation, |
|||
this._onFabLocationChanged), |
|||
new _RadioItem<FloatingActionButtonLocation>(kFabCenterDocked, this._fabLocation, |
|||
this._onFabLocationChanged), |
|||
new _RadioItem<FloatingActionButtonLocation>(kFabEndFloat, this._fabLocation, |
|||
this._onFabLocationChanged), |
|||
new _RadioItem<FloatingActionButtonLocation>(kFabCenterFloat, this._fabLocation, |
|||
this._onFabLocationChanged), |
|||
|
|||
new Divider(), |
|||
new _AppBarDemoHeading("App bar color"), |
|||
|
|||
new _ColorsItem(kBabColors, this._babColor, this._onBabColorChanged) |
|||
} |
|||
), |
|||
floatingActionButton: |
|||
this._fabShape.value, |
|||
floatingActionButtonLocation: |
|||
this._fabLocation.value, |
|||
bottomNavigationBar: new _DemoBottomAppBar( |
|||
color: this._babColor, |
|||
fabLocation: this._fabLocation.value, |
|||
shape: this._selectNotch() |
|||
) |
|||
); |
|||
} |
|||
|
|||
NotchedShape _selectNotch() { |
|||
if (!this._showNotch.value) { |
|||
return null; |
|||
} |
|||
|
|||
if (this._fabShape == kCircularFab) { |
|||
return new CircularNotchedRectangle(); |
|||
} |
|||
|
|||
if (this._fabShape == kDiamondFab) { |
|||
return new _DiamondNotchedRectangle(); |
|||
} |
|||
|
|||
return null; |
|||
} |
|||
} |
|||
|
|||
class _ChoiceValue<T> { |
|||
public _ChoiceValue(T value, string title, string label) { |
|||
this.value = value; |
|||
this.title = title; |
|||
this.label = label; |
|||
} |
|||
|
|||
public readonly T value; |
|||
public readonly string title; |
|||
string label; // For the Semantics widget that contains title
|
|||
|
|||
public override string ToString() { |
|||
return $"{this.GetType()}('{this.title}')"; |
|||
} |
|||
} |
|||
|
|||
class _RadioItem<T> : StatelessWidget { |
|||
public _RadioItem(_ChoiceValue<T> value, _ChoiceValue<T> groupValue, ValueChanged<_ChoiceValue<T>> onChanged) { |
|||
this.value = value; |
|||
this.groupValue = groupValue; |
|||
this.onChanged = onChanged; |
|||
} |
|||
|
|||
_ChoiceValue<T> value; |
|||
_ChoiceValue<T> groupValue; |
|||
ValueChanged<_ChoiceValue<T>> onChanged; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
ThemeData theme = Theme.of(context); |
|||
return new Container( |
|||
height: 56.0f, |
|||
padding: EdgeInsets.only(left: 16.0f), |
|||
alignment: Alignment.centerLeft, |
|||
child: new Row( |
|||
children: new List<Widget> { |
|||
new Radio<_ChoiceValue<T>>( |
|||
value: this.value, |
|||
groupValue: this.groupValue, |
|||
onChanged: this.onChanged |
|||
), |
|||
new Expanded( |
|||
child: new GestureDetector( |
|||
behavior: HitTestBehavior.opaque, |
|||
onTap: () => { this.onChanged(this.value); }, |
|||
child: new Text(this.value.title, |
|||
style: theme.textTheme.subhead |
|||
) |
|||
) |
|||
) |
|||
} |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _NamedColor { |
|||
public _NamedColor(Color color, string name) { |
|||
this.color = color; |
|||
this.name = name; |
|||
} |
|||
|
|||
public readonly Color color; |
|||
public readonly string name; |
|||
} |
|||
|
|||
class _ColorsItem : StatelessWidget { |
|||
public _ColorsItem(List<_NamedColor> colors, Color selectedColor, ValueChanged<Color> onChanged) { |
|||
this.colors = colors; |
|||
this.selectedColor = selectedColor; |
|||
this.onChanged = onChanged; |
|||
} |
|||
|
|||
List<_NamedColor> colors; |
|||
public readonly Color selectedColor; |
|||
ValueChanged<Color> onChanged; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
return new Row( |
|||
mainAxisAlignment: MainAxisAlignment.spaceEvenly, |
|||
children: this.colors.Select<_NamedColor, Widget>((_NamedColor namedColor) => { |
|||
return new RawMaterialButton( |
|||
onPressed: () => { this.onChanged(namedColor.color); }, |
|||
constraints: BoxConstraints.tightFor( |
|||
width: 32.0f, |
|||
height: 32.0f |
|||
), |
|||
fillColor: namedColor.color, |
|||
shape: new CircleBorder( |
|||
side: new BorderSide( |
|||
color: namedColor.color == this.selectedColor ? Colors.black : new Color(0xFFD5D7DA), |
|||
width: 2.0f |
|||
) |
|||
) |
|||
); |
|||
}).ToList() |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _AppBarDemoHeading : StatelessWidget { |
|||
public _AppBarDemoHeading(string text) { |
|||
this.text = text; |
|||
} |
|||
|
|||
public readonly string text; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
ThemeData theme = Theme.of(context); |
|||
return new Container( |
|||
height: 48.0f, |
|||
padding: EdgeInsets.only(left: 56.0f), |
|||
alignment: Alignment.centerLeft, |
|||
child: new Text(this.text, |
|||
style: theme.textTheme.body1.copyWith( |
|||
color: theme.primaryColor |
|||
) |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _DemoBottomAppBar : StatelessWidget { |
|||
public _DemoBottomAppBar( |
|||
Color color = null, |
|||
FloatingActionButtonLocation fabLocation = null, |
|||
NotchedShape shape = null |
|||
) { |
|||
this.color = color; |
|||
this.fabLocation = fabLocation; |
|||
this.shape = shape; |
|||
} |
|||
|
|||
public readonly Color color; |
|||
public readonly FloatingActionButtonLocation fabLocation; |
|||
public readonly NotchedShape shape; |
|||
|
|||
static readonly List<FloatingActionButtonLocation> kCenterLocations = new List<FloatingActionButtonLocation> { |
|||
FloatingActionButtonLocation.centerDocked, |
|||
FloatingActionButtonLocation.centerFloat |
|||
}; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
List<Widget> rowContents = new List<Widget> { |
|||
new IconButton( |
|||
icon: new Icon(Icons.menu), |
|||
onPressed: () => { |
|||
BottomSheetUtils.showModalBottomSheet<object>( |
|||
context: context, |
|||
builder: (BuildContext _context) => new _DemoDrawer() |
|||
); |
|||
} |
|||
) |
|||
}; |
|||
|
|||
if (kCenterLocations.Contains(this.fabLocation)) { |
|||
rowContents.Add( |
|||
new Expanded(child: new SizedBox()) |
|||
); |
|||
} |
|||
|
|||
rowContents.AddRange(new List<Widget> { |
|||
new IconButton( |
|||
icon: new Icon(Icons.search), |
|||
onPressed: () => { |
|||
Scaffold.of(context).showSnackBar( |
|||
new SnackBar(content: new Text("This is a dummy search action.")) |
|||
); |
|||
} |
|||
), |
|||
new IconButton( |
|||
icon: new Icon( |
|||
Theme.of(context).platform == RuntimePlatform.Android |
|||
? Icons.more_vert |
|||
: Icons.more_horiz |
|||
), |
|||
onPressed: () => { |
|||
Scaffold.of(context).showSnackBar( |
|||
new SnackBar(content: new Text("This is a dummy menu action.")) |
|||
); |
|||
} |
|||
) |
|||
}); |
|||
|
|||
return new BottomAppBar( |
|||
color: this.color, |
|||
child: new Row(children: rowContents), |
|||
shape: this.shape |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _DemoDrawer : StatelessWidget { |
|||
public _DemoDrawer() { |
|||
} |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
return new Drawer( |
|||
child: new Column( |
|||
children: new List<Widget> { |
|||
new ListTile( |
|||
leading: new Icon(Icons.search), |
|||
title: new Text("Search") |
|||
), |
|||
new ListTile( |
|||
leading: new Icon(Icons.threed_rotation), |
|||
title: new Text("3D") |
|||
) |
|||
} |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _DiamondFab : StatelessWidget { |
|||
public _DiamondFab( |
|||
Widget child, |
|||
VoidCallback onPressed |
|||
) { |
|||
this.child = child; |
|||
this.onPressed = onPressed; |
|||
} |
|||
|
|||
public readonly Widget child; |
|||
public readonly VoidCallback onPressed; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
return new Material( |
|||
shape: new _DiamondBorder(), |
|||
color: Colors.orange, |
|||
child: new InkWell( |
|||
onTap: this.onPressed == null ? (GestureTapCallback) null : () => { this.onPressed(); }, |
|||
child: new Container( |
|||
width: 56.0f, |
|||
height: 56.0f, |
|||
child: IconTheme.merge( |
|||
data: new IconThemeData(color: Theme.of(context).accentIconTheme.color), |
|||
child: this.child |
|||
) |
|||
) |
|||
), |
|||
elevation: 6.0f |
|||
); |
|||
} |
|||
} |
|||
|
|||
class _DiamondNotchedRectangle : NotchedShape { |
|||
public _DiamondNotchedRectangle() { |
|||
} |
|||
|
|||
public override Path getOuterPath(Rect host, Rect guest) { |
|||
if (!host.overlaps(guest)) { |
|||
Path path = new Path(); |
|||
path.addRect(host); |
|||
return path; |
|||
} |
|||
|
|||
D.assert(guest.width > 0.0f); |
|||
|
|||
Rect intersection = guest.intersect(host); |
|||
float notchToCenter = |
|||
intersection.height * (guest.height / 2.0f) |
|||
/ (guest.width / 2.0f); |
|||
|
|||
Path ret = new Path(); |
|||
ret.moveTo(host.left, host.top); |
|||
ret.lineTo(guest.center.dx - notchToCenter, host.top); |
|||
ret.lineTo(guest.left + guest.width / 2.0f, guest.bottom); |
|||
ret.lineTo(guest.center.dx + notchToCenter, host.top); |
|||
ret.lineTo(host.right, host.top); |
|||
ret.lineTo(host.right, host.bottom); |
|||
ret.lineTo(host.left, host.bottom); |
|||
ret.close(); |
|||
return ret; |
|||
} |
|||
} |
|||
|
|||
class _DiamondBorder : ShapeBorder { |
|||
public _DiamondBorder() { |
|||
} |
|||
|
|||
public override EdgeInsets dimensions { |
|||
get { return EdgeInsets.only(); } |
|||
} |
|||
|
|||
public override Path getInnerPath(Rect rect) { |
|||
return this.getOuterPath(rect); |
|||
} |
|||
|
|||
public override Path getOuterPath(Rect rect) { |
|||
Path path = new Path(); |
|||
path.moveTo(rect.left + rect.width / 2.0f, rect.top); |
|||
path.lineTo(rect.right, rect.top + rect.height / 2.0f); |
|||
path.lineTo(rect.left + rect.width / 2.0f, rect.bottom); |
|||
path.lineTo(rect.left, rect.top + rect.height / 2.0f); |
|||
path.close(); |
|||
return path; |
|||
} |
|||
|
|||
public override void paint(Canvas canvas, Rect rect) { |
|||
} |
|||
|
|||
public override ShapeBorder scale(float t) { |
|||
return null; |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: 7c1d20efeafe42699212e2147c0828af |
|||
timeCreated: 1553149093 |
|
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using Unity.UIWidgets.animation; |
|||
using Unity.UIWidgets.material; |
|||
using Unity.UIWidgets.painting; |
|||
using Unity.UIWidgets.scheduler; |
|||
using Unity.UIWidgets.service; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.widgets; |
|||
|
|||
namespace UIWidgetsGallery.gallery { |
|||
public class NavigationIconView { |
|||
public NavigationIconView( |
|||
Widget icon = null, |
|||
Widget activeIcon = null, |
|||
string title = null, |
|||
Color color = null, |
|||
TickerProvider vsync = null |
|||
) { |
|||
this._icon = icon; |
|||
this._color = color; |
|||
this._title = title; |
|||
this.item = new BottomNavigationBarItem( |
|||
icon: icon, |
|||
activeIcon: activeIcon, |
|||
title: new Text(title), |
|||
backgroundColor: color |
|||
); |
|||
this.controller = new AnimationController( |
|||
duration: ThemeUtils.kThemeAnimationDuration, |
|||
vsync: vsync |
|||
); |
|||
this._animation = this.controller.drive(new CurveTween( |
|||
curve: new Interval(0.5f, 1.0f, curve: Curves.fastOutSlowIn) |
|||
)); |
|||
} |
|||
|
|||
readonly Widget _icon; |
|||
readonly Color _color; |
|||
readonly string _title; |
|||
public readonly BottomNavigationBarItem item; |
|||
public readonly AnimationController controller; |
|||
Animation<float> _animation; |
|||
|
|||
public FadeTransition transition(BottomNavigationBarType type, BuildContext context) { |
|||
Color iconColor; |
|||
if (type == BottomNavigationBarType.shifting) { |
|||
iconColor = this._color; |
|||
} |
|||
else { |
|||
ThemeData themeData = Theme.of(context); |
|||
iconColor = themeData.brightness == Brightness.light |
|||
? themeData.primaryColor |
|||
: themeData.accentColor; |
|||
} |
|||
|
|||
return new FadeTransition( |
|||
opacity: this._animation, |
|||
child: new SlideTransition( |
|||
position: this._animation.drive( |
|||
new OffsetTween( |
|||
begin: new Offset(0.0f, 0.02f), // Slightly down.
|
|||
end: Offset.zero |
|||
) |
|||
), |
|||
child: new IconTheme( |
|||
data: new IconThemeData( |
|||
color: iconColor, |
|||
size: 120.0f |
|||
), |
|||
child: this._icon |
|||
) |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
public class CustomIcon : StatelessWidget { |
|||
public override Widget build(BuildContext context) { |
|||
IconThemeData iconTheme = IconTheme.of(context); |
|||
return new Container( |
|||
margin: EdgeInsets.all(4.0f), |
|||
width: iconTheme.size - 8.0f, |
|||
height: iconTheme.size - 8.0f, |
|||
color: iconTheme.color |
|||
); |
|||
} |
|||
} |
|||
|
|||
public class CustomInactiveIcon : StatelessWidget { |
|||
public override Widget build(BuildContext context) { |
|||
IconThemeData iconTheme = IconTheme.of(context); |
|||
return new Container( |
|||
margin: EdgeInsets.all(4.0f), |
|||
width: iconTheme.size - 8.0f, |
|||
height: iconTheme.size - 8.0f, |
|||
decoration: new BoxDecoration( |
|||
border: Border.all(color: iconTheme.color, width: 2.0f) |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
public class BottomNavigationDemo : StatefulWidget { |
|||
public const string routeName = "/material/bottom_navigation"; |
|||
|
|||
public override State createState() { |
|||
return new _BottomNavigationDemoState(); |
|||
} |
|||
} |
|||
|
|||
class _BottomNavigationDemoState : TickerProviderStateMixin<BottomNavigationDemo> { |
|||
int _currentIndex = 0; |
|||
BottomNavigationBarType _type = BottomNavigationBarType.shifting; |
|||
List<NavigationIconView> _navigationViews; |
|||
|
|||
public override void initState() { |
|||
base.initState(); |
|||
this._navigationViews = new List<NavigationIconView> { |
|||
new NavigationIconView( |
|||
icon: new Icon(Icons.access_alarm), |
|||
title: "Alarm", |
|||
color: Colors.deepPurple, |
|||
vsync: this |
|||
), |
|||
new NavigationIconView( |
|||
activeIcon: new CustomIcon(), |
|||
icon: new CustomInactiveIcon(), |
|||
title: "Box", |
|||
color: Colors.deepOrange, |
|||
vsync: this |
|||
), |
|||
new NavigationIconView( |
|||
activeIcon: new Icon(Icons.cloud), |
|||
icon: new Icon(Icons.cloud_queue), |
|||
title: "Cloud", |
|||
color: Colors.teal, |
|||
vsync: this |
|||
), |
|||
new NavigationIconView( |
|||
activeIcon: new Icon(Icons.favorite), |
|||
icon: new Icon(Icons.favorite_border), |
|||
title: "Favorites", |
|||
color: Colors.indigo, |
|||
vsync: this |
|||
), |
|||
new NavigationIconView( |
|||
icon: new Icon(Icons.event_available), |
|||
title: "Event", |
|||
color: Colors.pink, |
|||
vsync: this |
|||
) |
|||
}; |
|||
|
|||
this._navigationViews[this._currentIndex].controller.setValue(1.0f); |
|||
} |
|||
|
|||
public override void dispose() { |
|||
foreach (NavigationIconView view in this._navigationViews) { |
|||
view.controller.dispose(); |
|||
} |
|||
|
|||
base.dispose(); |
|||
} |
|||
|
|||
Widget _buildTransitionsStack() { |
|||
List<FadeTransition> transitions = new List<FadeTransition> { }; |
|||
|
|||
foreach (NavigationIconView view in this._navigationViews) { |
|||
transitions.Add(view.transition(this._type, this.context)); |
|||
} |
|||
|
|||
transitions.Sort((FadeTransition a, FadeTransition b) => { |
|||
Animation<float> aAnimation = a.opacity; |
|||
Animation<float> bAnimation = b.opacity; |
|||
float aValue = aAnimation.value; |
|||
float bValue = bAnimation.value; |
|||
return aValue.CompareTo(bValue); |
|||
}); |
|||
|
|||
return new Stack(children: transitions.Select<FadeTransition, Widget>(w => w).ToList()); |
|||
} |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
BottomNavigationBar botNavBar = new BottomNavigationBar( |
|||
items: this._navigationViews.Select((NavigationIconView navigationView) => navigationView.item) |
|||
.ToList(), |
|||
currentIndex: this._currentIndex, |
|||
type: this._type, |
|||
onTap: (int index) => { |
|||
this.setState(() => { |
|||
this._navigationViews[this._currentIndex].controller.reverse(); |
|||
this._currentIndex = index; |
|||
this._navigationViews[this._currentIndex].controller.forward(); |
|||
}); |
|||
} |
|||
); |
|||
|
|||
return new Scaffold( |
|||
appBar: new AppBar( |
|||
title: new Text("Bottom navigation"), |
|||
actions: new List<Widget> { |
|||
new MaterialDemoDocumentationButton(BottomNavigationDemo.routeName), |
|||
new PopupMenuButton<BottomNavigationBarType>( |
|||
onSelected: (BottomNavigationBarType value) => { |
|||
this.setState(() => { this._type = value; }); |
|||
}, |
|||
itemBuilder: (BuildContext _context) => new List<PopupMenuEntry<BottomNavigationBarType>> { |
|||
new PopupMenuItem<BottomNavigationBarType>( |
|||
value: BottomNavigationBarType.fix, |
|||
child: new Text("Fixed") |
|||
), |
|||
new PopupMenuItem<BottomNavigationBarType>( |
|||
value: BottomNavigationBarType.shifting, |
|||
child: new Text("Shifting") |
|||
) |
|||
} |
|||
) |
|||
} |
|||
), |
|||
body: new Center( |
|||
child: this._buildTransitionsStack() |
|||
), |
|||
bottomNavigationBar: botNavBar |
|||
); |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: d279028b09c04c2b8ab3fba122868004 |
|||
timeCreated: 1553221768 |
|
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using Unity.UIWidgets.foundation; |
|||
using Unity.UIWidgets.material; |
|||
using Unity.UIWidgets.painting; |
|||
using Unity.UIWidgets.rendering; |
|||
using Unity.UIWidgets.ui; |
|||
using Unity.UIWidgets.widgets; |
|||
using Image = Unity.UIWidgets.widgets.Image; |
|||
using TextStyle = Unity.UIWidgets.painting.TextStyle; |
|||
|
|||
namespace UIWidgetsGallery.gallery { |
|||
class CardsDemoConstants { |
|||
public static readonly List<TravelDestination> destinations = new List<TravelDestination> { |
|||
new TravelDestination( |
|||
assetName: "india_thanjavur_market", |
|||
title: "Top 10 Cities to Visit in Tamil Nadu", |
|||
description: new List<string> { |
|||
"Number 10", |
|||
"Thanjavur", |
|||
"Thanjavur, Tamil Nadu" |
|||
} |
|||
), |
|||
new TravelDestination( |
|||
assetName: "india_chettinad_silk_maker", |
|||
title: "Artisans of Southern India", |
|||
description: new List<string> { |
|||
"Silk Spinners", |
|||
"Chettinad", |
|||
"Sivaganga, Tamil Nadu" |
|||
} |
|||
) |
|||
}; |
|||
} |
|||
|
|||
public class TravelDestination { |
|||
public TravelDestination( |
|||
string assetName = null, |
|||
string title = null, |
|||
List<string> description = null |
|||
) { |
|||
this.assetName = assetName; |
|||
this.title = title; |
|||
this.description = description; |
|||
} |
|||
|
|||
public readonly string assetName; |
|||
public readonly string title; |
|||
public readonly List<string> description; |
|||
|
|||
public bool isValid { |
|||
get { return this.assetName != null && this.title != null && this.description?.Count == 3; } |
|||
} |
|||
} |
|||
|
|||
|
|||
public class TravelDestinationItem : StatelessWidget { |
|||
public TravelDestinationItem(Key key = null, TravelDestination destination = null, ShapeBorder shape = null) |
|||
: base(key: key) { |
|||
D.assert(destination != null && destination.isValid); |
|||
this.destination = destination; |
|||
this.shape = shape; |
|||
} |
|||
|
|||
public const float height = 366.0f; |
|||
public readonly TravelDestination destination; |
|||
public readonly ShapeBorder shape; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
ThemeData theme = Theme.of(context); |
|||
TextStyle titleStyle = theme.textTheme.headline.copyWith(color: Colors.white); |
|||
TextStyle descriptionStyle = theme.textTheme.subhead; |
|||
|
|||
return new SafeArea( |
|||
top: false, |
|||
bottom: false, |
|||
child: new Container( |
|||
padding: EdgeInsets.all(8.0f), |
|||
height: height, |
|||
child: new Card( |
|||
shape: this.shape, |
|||
child: new Column( |
|||
crossAxisAlignment: CrossAxisAlignment.start, |
|||
children: new List<Widget> { |
|||
new SizedBox( |
|||
height: 184.0f, |
|||
child: new Stack( |
|||
children: new List<Widget> { |
|||
Positioned.fill( |
|||
child: Image.asset(this.destination.assetName, |
|||
fit: BoxFit.cover |
|||
) |
|||
), |
|||
new Positioned( |
|||
bottom: 16.0f, |
|||
left: 16.0f, |
|||
right: 16.0f, |
|||
child: new FittedBox( |
|||
fit: BoxFit.scaleDown, |
|||
alignment: Alignment.centerLeft, |
|||
child: new Text(this.destination.title, |
|||
style: titleStyle |
|||
) |
|||
) |
|||
) |
|||
} |
|||
) |
|||
), |
|||
new Expanded( |
|||
child: new Padding( |
|||
padding: EdgeInsets.fromLTRB(16.0f, 16.0f, 16.0f, 0.0f), |
|||
child: new DefaultTextStyle( |
|||
softWrap: false, |
|||
overflow: TextOverflow.ellipsis, |
|||
style: descriptionStyle, |
|||
child: new Column( |
|||
crossAxisAlignment: CrossAxisAlignment.start, |
|||
children: new List<Widget> { |
|||
new Padding( |
|||
padding: EdgeInsets.only(bottom: 8.0f), |
|||
child: new Text(this.destination.description[0], |
|||
style: descriptionStyle.copyWith(color: Colors.black54) |
|||
) |
|||
), |
|||
new Text(this.destination.description[1]), |
|||
new Text(this.destination.description[2]) |
|||
} |
|||
) |
|||
) |
|||
) |
|||
), |
|||
ButtonTheme.bar( |
|||
child: new ButtonBar( |
|||
alignment: MainAxisAlignment.start, |
|||
children: new List<Widget> { |
|||
new FlatButton( |
|||
child: new Text("SHARE"), |
|||
textColor: Colors.amber.shade500, |
|||
onPressed: () => { |
|||
/* do nothing */ |
|||
} |
|||
), |
|||
new FlatButton( |
|||
child: new Text("EXPLORE"), |
|||
textColor: Colors.amber.shade500, |
|||
onPressed: () => { |
|||
/* do nothing */ |
|||
} |
|||
) |
|||
} |
|||
) |
|||
), |
|||
} |
|||
) |
|||
) |
|||
) |
|||
); |
|||
} |
|||
} |
|||
|
|||
|
|||
public class CardsDemo : StatefulWidget { |
|||
public const string routeName = "/material/cards"; |
|||
|
|||
public override State createState() { |
|||
return new _CardsDemoState(); |
|||
} |
|||
} |
|||
|
|||
class _CardsDemoState : State<CardsDemo> { |
|||
ShapeBorder _shape; |
|||
|
|||
public override Widget build(BuildContext context) { |
|||
return new Scaffold( |
|||
appBar: new AppBar( |
|||
title: new Text("Travel stream"), |
|||
actions: new List<Widget> { |
|||
new MaterialDemoDocumentationButton(CardsDemo.routeName), |
|||
new IconButton( |
|||
icon: new Icon( |
|||
Icons.sentiment_very_satisfied |
|||
), |
|||
onPressed: () => { |
|||
this.setState(() => { |
|||
this._shape = this._shape != null |
|||
? null |
|||
: new RoundedRectangleBorder( |
|||
borderRadius: BorderRadius.only( |
|||
topLeft: Radius.circular(16.0f), |
|||
topRight: Radius.circular(16.0f), |
|||
bottomLeft: Radius.circular(2.0f), |
|||
bottomRight: Radius.circular(2.0f) |
|||
) |
|||
); |
|||
}); |
|||
} |
|||
) |
|||
} |
|||
), |
|||
body: new ListView( |
|||
itemExtent: TravelDestinationItem.height, |
|||
padding: EdgeInsets.only(top: 8.0f, left: 8.0f, right: 8.0f), |
|||
children: CardsDemoConstants.destinations.Select<TravelDestination, Widget>( |
|||
(TravelDestination destination) => { |
|||
return new Container( |
|||
margin: EdgeInsets.only(bottom: 8.0f), |
|||
child: new TravelDestinationItem( |
|||
destination: destination, |
|||
shape: this._shape |
|||
) |
|||
); |
|||
}).ToList() |
|||
) |
|||
); |
|||
} |
|||
} |
|||
} |
|
|||
fileFormatVersion: 2 |
|||
guid: f199ea32d87544c892f57b8af0fcbb03 |
|||
timeCreated: 1553136548 |
1001
Tests/Resources/india_chettinad_silk_maker.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: 759295bbc368246a0877963ba053ed5d |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
1001
Tests/Resources/india_thanjavur_market.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: 69711c649948f4cb1ad20b82f1926a29 |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 2edd4d858895b44ff89047544e685c54 |
|||
folderAsset: yes |
|||
DefaultImporter: |
|||
externalObjects: {} |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
1001
Tests/Resources/products/backpack.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: 674a904c9f4234b9ba9f78eb37f237fe |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
1001
Tests/Resources/products/belt.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: 8a6d8f5795ade4d2abc66cd64533f8ac |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 7443ec2c33a954d6ea65634db88ec9de |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
1001
Tests/Resources/products/deskset.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: 9181044e6c0c4467b933708e3834f35e |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 452e42b2f60134df48d45ab49a21d8ec |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
1001
Tests/Resources/products/earrings.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: 7619ea1564ba546ab91b5f0ab38a9f6b |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 2a94339103e7e40219169f13b5ce7013 |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 1c9bf8d4be2ec4909968b137cca6a5a5 |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 39dfc9119bacf4b85b0d265fae8a101f |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 4de6e7bd13cc942acaf79ea01980376e |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
1001
Tests/Resources/products/kitchen_quattro.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: d02d7a685bb6643ab841d43ee08037a1 |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
1001
Tests/Resources/products/napkins.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: 2cfec1ff4da1c4180a77badc07700991 |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: d6cfe1d64e50b4921b6127378911cf72 |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 5670aeff677b64088bebe4eca1226f4d |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
1001
Tests/Resources/products/scarf.png
文件差异内容过多而无法显示
查看文件
文件差异内容过多而无法显示
查看文件
|
|||
fileFormatVersion: 2 |
|||
guid: cbceefcfd006d450c82769c232fc553e |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 62306f72bb1ce45babf84b36b72a517c |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 86fa61eb0c5b14c9380cc7996cc0eb05 |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 62ba7ebbec25c471daaf40bb55f357ad |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
|
|||
fileFormatVersion: 2 |
|||
guid: 2c1f449cb818546b6aac2487bf16ea91 |
|||
TextureImporter: |
|||
fileIDToRecycleName: {} |
|||
externalObjects: {} |
|||
serializedVersion: 9 |
|||
mipmaps: |
|||
mipMapMode: 0 |
|||
enableMipMap: 1 |
|||
sRGBTexture: 1 |
|||
linearTexture: 0 |
|||
fadeOut: 0 |
|||
borderMipMap: 0 |
|||
mipMapsPreserveCoverage: 0 |
|||
alphaTestReferenceValue: 0.5 |
|||
mipMapFadeDistanceStart: 1 |
|||
mipMapFadeDistanceEnd: 3 |
|||
bumpmap: |
|||
convertToNormalMap: 0 |
|||
externalNormalMap: 0 |
|||
heightScale: 0.25 |
|||
normalMapFilter: 0 |
|||
isReadable: 0 |
|||
streamingMipmaps: 0 |
|||
streamingMipmapsPriority: 0 |
|||
grayScaleToAlpha: 0 |
|||
generateCubemap: 6 |
|||
cubemapConvolution: 0 |
|||
seamlessCubemap: 0 |
|||
textureFormat: 1 |
|||
maxTextureSize: 2048 |
|||
textureSettings: |
|||
serializedVersion: 2 |
|||
filterMode: -1 |
|||
aniso: -1 |
|||
mipBias: -100 |
|||
wrapU: -1 |
|||
wrapV: -1 |
|||
wrapW: -1 |
|||
nPOTScale: 1 |
|||
lightmap: 0 |
|||
compressionQuality: 50 |
|||
spriteMode: 0 |
|||
spriteExtrude: 1 |
|||
spriteMeshType: 1 |
|||
alignment: 0 |
|||
spritePivot: {x: 0.5, y: 0.5} |
|||
spritePixelsToUnits: 100 |
|||
spriteBorder: {x: 0, y: 0, z: 0, w: 0} |
|||
spriteGenerateFallbackPhysicsShape: 1 |
|||
alphaUsage: 1 |
|||
alphaIsTransparency: 0 |
|||
spriteTessellationDetail: -1 |
|||
textureType: 0 |
|||
textureShape: 1 |
|||
singleChannelComponent: 0 |
|||
maxTextureSizeSet: 0 |
|||
compressionQualitySet: 0 |
|||
textureFormatSet: 0 |
|||
platformSettings: |
|||
- serializedVersion: 2 |
|||
buildTarget: DefaultTexturePlatform |
|||
maxTextureSize: 2048 |
|||
resizeAlgorithm: 0 |
|||
textureFormat: -1 |
|||
textureCompression: 1 |
|||
compressionQuality: 50 |
|||
crunchedCompression: 0 |
|||
allowsAlphaSplitting: 0 |
|||
overridden: 0 |
|||
androidETC2FallbackOverride: 0 |
|||
spriteSheet: |
|||
serializedVersion: 2 |
|||
sprites: [] |
|||
outline: [] |
|||
physicsShape: [] |
|||
bones: [] |
|||
spriteID: |
|||
vertices: [] |
|||
indices: |
|||
edges: [] |
|||
weights: [] |
|||
spritePackingTag: |
|||
pSDRemoveMatte: 0 |
|||
pSDShowRemoveMatteOption: 0 |
|||
userData: |
|||
assetBundleName: |
|||
assetBundleVariant: |
部分文件因为文件数量过多而无法显示
撰写
预览
正在加载...
取消
保存
Reference in new issue