public static void CreateVolumeSlider() { //Check if canvas exist in the scene Canvas canvas = FindObjectOfType <Canvas>(); if (canvas == null) { GameObject newCanvas = new GameObject("Canvas"); Canvas canvasComponent = newCanvas.AddComponent <Canvas>(); canvasComponent.renderMode = RenderMode.ScreenSpaceOverlay; newCanvas.AddComponent <CanvasScaler>(); newCanvas.AddComponent <GraphicRaycaster>(); canvas = canvasComponent; } //Creation of the Volume Slider GameObject GameObject volumeSliderGO = new GameObject("VolumeSlider"); VolumeSlider volumeSlider = volumeSliderGO.AddComponent <VolumeSlider>(); volumeSliderGO.transform.SetParent(canvas.transform); volumeSliderGO.transform.localPosition = Vector3.zero; RectTransform volumeSliderRectTransform = volumeSliderGO.GetComponent <RectTransform>(); volumeSliderRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 160f); volumeSliderRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 20f); //Creation of the slider GameObject components //Background GameObject background = new GameObject("Background"); GameObjectUtility.SetParentAndAlign(background, volumeSliderGO); RectTransform backgroundRectTransform = background.AddComponent <RectTransform>(); backgroundRectTransform.anchorMin = new Vector2(0f, 0.25f); backgroundRectTransform.anchorMax = new Vector2(1f, 0.75f); backgroundRectTransform.offsetMin = new Vector2(0f, 0f); backgroundRectTransform.offsetMax = new Vector2(0f, 0f); //Get the default background from unity Image backgroundImage = background.AddComponent <Image>(); backgroundImage.sprite = AssetDatabase.GetBuiltinExtraResource <Sprite>("UI/Skin/Background.psd"); backgroundImage.type = Image.Type.Sliced; //Fill Area GameObject fillArea = new GameObject("Fill Area"); GameObjectUtility.SetParentAndAlign(fillArea, volumeSliderGO); RectTransform fillAreaRectTransform = fillArea.AddComponent <RectTransform>(); fillAreaRectTransform.anchorMin = new Vector2(0f, 0.25f); fillAreaRectTransform.anchorMax = new Vector2(1f, 0.75f); fillAreaRectTransform.anchoredPosition = new Vector2(-5f, 0f); fillAreaRectTransform.sizeDelta = new Vector2(-20f, 0f); //Fill GameObject fill = new GameObject("Fill"); GameObjectUtility.SetParentAndAlign(fill, fillArea); RectTransform fillRectTransform = fill.AddComponent <RectTransform>(); fillRectTransform.anchorMin = new Vector2(0f, 0f); fillRectTransform.anchorMax = new Vector2(0f, 1f); fillRectTransform.sizeDelta = new Vector2(10f, 0f); //Set the fillImage sprite with the default unity UISprite Image fillImage = fill.AddComponent <Image>(); fillImage.sprite = AssetDatabase.GetBuiltinExtraResource <Sprite>("UI/Skin/UISprite.psd"); fillImage.type = Image.Type.Sliced; //Handle Slide Area GameObject handleSlideArea = new GameObject("Handle Slide Area"); GameObjectUtility.SetParentAndAlign(handleSlideArea, volumeSliderGO); RectTransform handleSlideAreaRectTransform = handleSlideArea.AddComponent <RectTransform>(); handleSlideAreaRectTransform.anchorMin = new Vector2(0f, 0f); handleSlideAreaRectTransform.anchorMax = new Vector2(1f, 1f); handleSlideAreaRectTransform.offsetMin = new Vector2(10f, 0f); handleSlideAreaRectTransform.offsetMax = new Vector2(-10f, 0f); //Handle GameObject handle = new GameObject("Handle"); GameObjectUtility.SetParentAndAlign(handle, handleSlideArea); RectTransform handleRectTransform = handle.AddComponent <RectTransform>(); handleRectTransform.anchorMin = new Vector2(0f, 0f); handleRectTransform.anchorMax = new Vector2(0f, 1f); handleRectTransform.sizeDelta = new Vector2(20f, 0f); //Setting the fillImage sprite with the default unity UISprite Image handleImage = handle.AddComponent <Image>(); handleImage.sprite = AssetDatabase.GetBuiltinExtraResource <Sprite>("UI/Skin/Knob.psd"); //Prepare the VolumeSlider script volumeSlider.targetGraphic = handleImage; volumeSlider.fillRect = fillRectTransform; volumeSlider.handleRect = handleRectTransform; volumeSlider.minValue = -80f; volumeSlider.maxValue = 20f; volumeSlider.value = 0f; }
public void Awake() { serializedProperty = serializedObject.FindProperty("enumSelected"); volumeSlider = (VolumeSlider)target; volumeSlider.InitSoundTypeEnum(); }