@@ -409,56 +409,49 @@ public static GameObject CreateScrollbar(GameObject parent, string name, out Scr
409
409
/// <summary>
410
410
/// Create a Toggle control.
411
411
/// </summary>
412
- public static GameObject CreateToggle ( GameObject parent , string name , out Toggle toggle , out Text text , Color bgColor = default )
412
+ public static GameObject CreateToggle ( GameObject parent , string name , out Toggle toggle , out Text text , Color bgColor = default ,
413
+ int checkWidth = 20 , int checkHeight = 20 )
413
414
{
415
+ // Main obj
414
416
GameObject toggleObj = CreateUIObject ( name , parent , _smallElementSize ) ;
415
-
416
- GameObject bgObj = CreateUIObject ( "Background" , toggleObj ) ;
417
- GameObject checkObj = CreateUIObject ( "Checkmark" , bgObj ) ;
418
- GameObject labelObj = CreateUIObject ( "Label" , toggleObj ) ;
419
-
417
+ SetLayoutGroup < HorizontalLayoutGroup > ( toggleObj , false , false , true , true , 5 , 0 , 0 , 0 , 0 , childAlignment : TextAnchor . MiddleLeft ) ;
420
418
toggle = toggleObj . AddComponent < Toggle > ( ) ;
421
419
toggle . isOn = true ;
420
+ SetDefaultSelectableColors ( toggle ) ;
421
+ // need a second reference so we can use it inside the lambda, since 'toggle' is an out var.
422
+ Toggle t2 = toggle ;
423
+ toggle . onValueChanged . AddListener ( ( bool _ ) => { t2 . OnDeselect ( null ) ; } ) ;
422
424
423
- // second reference so we can use it inside the lambda, 'toggle' is an out var.
424
- Toggle toggleComp = toggle ;
425
- toggle . onValueChanged . AddListener ( Deselect ) ;
426
- void Deselect ( bool _ )
427
- {
428
- toggleComp . OnDeselect ( null ) ;
429
- }
425
+ // Check mark background
430
426
431
- Image bgImage = bgObj . AddComponent < Image > ( ) ;
427
+ GameObject checkBgObj = CreateUIObject ( "Background" , toggleObj ) ;
428
+ Image bgImage = checkBgObj . AddComponent < Image > ( ) ;
432
429
bgImage . color = bgColor == default ? new Color ( 0.04f , 0.04f , 0.04f , 0.75f ) : bgColor ;
433
430
434
- Image checkImage = checkObj . AddComponent < Image > ( ) ;
431
+ SetLayoutGroup < HorizontalLayoutGroup > ( checkBgObj , true , true , true , true , 0 , 2 , 2 , 2 , 2 ) ;
432
+ SetLayoutElement ( checkBgObj , minWidth : checkWidth , flexibleWidth : 0 , minHeight : checkHeight , flexibleHeight : 0 ) ;
433
+
434
+ // Check mark image
435
+
436
+ GameObject checkMarkObj = CreateUIObject ( "Checkmark" , checkBgObj ) ;
437
+ Image checkImage = checkMarkObj . AddComponent < Image > ( ) ;
435
438
checkImage . color = new Color ( 0.8f , 1 , 0.8f , 0.3f ) ;
436
439
440
+ // Label
441
+
442
+ GameObject labelObj = CreateUIObject ( "Label" , toggleObj ) ;
437
443
text = labelObj . AddComponent < Text > ( ) ;
438
- text . text = "Toggle" ;
444
+ text . text = "" ;
445
+ text . alignment = TextAnchor . MiddleLeft ;
439
446
SetDefaultTextValues ( text ) ;
440
447
441
- toggle . graphic = checkImage ;
442
- toggle . targetGraphic = bgImage ;
443
- SetDefaultSelectableColors ( toggle ) ;
448
+ SetLayoutElement ( labelObj , minWidth : 0 , flexibleWidth : 0 , minHeight : checkHeight , flexibleHeight : 0 ) ;
444
449
445
- RectTransform bgRect = bgObj . GetComponent < RectTransform > ( ) ;
446
- bgRect . anchorMin = new Vector2 ( 0f , 1f ) ;
447
- bgRect . anchorMax = new Vector2 ( 0f , 1f ) ;
448
- bgRect . anchoredPosition = new Vector2 ( 13f , - 13f ) ;
449
- bgRect . sizeDelta = new Vector2 ( 20f , 20f ) ;
450
+ // References
450
451
451
- RectTransform checkRect = checkObj . GetComponent < RectTransform > ( ) ;
452
- checkRect . anchorMin = new Vector2 ( 0.5f , 0.5f ) ;
453
- checkRect . anchorMax = new Vector2 ( 0.5f , 0.5f ) ;
454
- checkRect . anchoredPosition = Vector2 . zero ;
455
- checkRect . sizeDelta = new Vector2 ( 14f , 14f ) ;
452
+ toggle . graphic = checkImage ;
453
+ toggle . targetGraphic = bgImage ;
456
454
457
- RectTransform labelRect = labelObj . GetComponent < RectTransform > ( ) ;
458
- labelRect . anchorMin = new Vector2 ( 0f , 0f ) ;
459
- labelRect . anchorMax = new Vector2 ( 1f , 1f ) ;
460
- labelRect . offsetMin = new Vector2 ( 28f , 2f ) ;
461
- labelRect . offsetMax = new Vector2 ( - 5f , - 5f ) ;
462
455
return toggleObj ;
463
456
}
464
457
0 commit comments