Author Topic: Multiples UISlider binding Mégafiers morph problem  (Read 5634 times)

ilanb

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 19
    • View Profile
Multiples UISlider binding Mégafiers morph problem
« on: June 03, 2014, 02:00:50 AM »
Hi,

I Have some slider to morph a GameObject. I have updated to 3.6.2 but now When I use a slider, other don't send change to my morph.

here is my listener : void Start()

  1. EventDelegate.Add(SliderArea.onChange, OnSliderAreaChange);
  2.                 EventDelegate.Add(SliderLoin.onChange, OnSliderLoinChange);
  3.                 EventDelegate.Add(SliderHip.onChange, OnSliderHipChange);
  4.                 EventDelegate.Add(SliderThigh.onChange, OnSliderThighChange);
  5.                 EventDelegate.Add(SliderRib.onChange, OnSliderRibChange);

here is functions :

  1. void OnSliderLoinChange()
  2.         {
  3.                 UpdateSlidersValue(SliderArea, SliderLoin);
  4.                 UpdateSlidersValue(SliderHip, SliderLoin);
  5.                 UpdateSlidersValue(SliderThigh, SliderLoin);
  6.                 UpdateSlidersValue(SliderRib, SliderLoin);
  7.  
  8.                 UpdateMorphValue(KLOIN, UISlider.current.value);
  9.         }
  10.        
  11.         void OnSliderAreaChange()
  12.         {
  13.                 UpdateSlidersValue(SliderHip, SliderArea);
  14.                 UpdateSlidersValue(SliderThigh, SliderArea);
  15.                 UpdateSlidersValue(SliderRib, SliderArea);
  16.                 UpdateSlidersValue(SliderLoin, SliderArea);
  17.  
  18.                 UpdateMorphValue(KAREA, UISlider.current.value);
  19.         }
  20.        
  21.         void OnSliderHipChange()
  22.         {
  23.                 UpdateSlidersValue(SliderThigh, SliderHip);
  24.                 UpdateSlidersValue(SliderRib, SliderHip);
  25.                 UpdateSlidersValue(SliderLoin, SliderHip);
  26.                 UpdateSlidersValue(SliderArea, SliderHip);
  27.  
  28.                 UpdateMorphValue(KHIP, UISlider.current.value);
  29.         }
  30.        
  31.         void OnSliderThighChange()
  32.         {
  33.                 UpdateSlidersValue(SliderLoin, SliderThigh);
  34.                 UpdateSlidersValue(SliderArea, SliderThigh);
  35.                 UpdateSlidersValue(SliderHip, SliderThigh);
  36.                 UpdateSlidersValue(SliderRib, SliderThigh);
  37.  
  38.                 UpdateMorphValue(KTHIGH, UISlider.current.value);
  39.         }
  40.        
  41.         void OnSliderRibChange()
  42.         {
  43.                 UpdateSlidersValue(SliderLoin, SliderRib);
  44.                 UpdateSlidersValue(SliderArea, SliderRib);
  45.                 UpdateSlidersValue(SliderHip, SliderRib);
  46.                 UpdateSlidersValue(SliderThigh, SliderRib);
  47.  
  48.                 UpdateMorphValue(KRIB, UISlider.current.value);
  49.         }

The code to morph my GameObject and update other slider:

  1. void UpdateMorphValue (int slider, float valueMorph)
  2.         {
  3.                 _sValue = Mathf.Lerp (0f, 100f, valueMorph);
  4.                
  5.                 if (_sValue <= 50.0f) {
  6.                         _mr.SetPercent (slider + 1, 0.0f);
  7.                         _mr.SetPercent (slider, 100f - _sValue * 2);
  8.                 } else if (_sValue >= 50.0f) {
  9.                         _mr.SetPercent (slider, 0.0f);
  10.                         _mr.SetPercent (slider + 1, (_sValue - 50.0f) * 2);
  11.                 } else {
  12.                         _mr.SetPercent (slider, 0.0f);
  13.                         _mr.SetPercent (slider + 1, 0.0f);
  14.                 }
  15.         }
  16.  
  17.         // Mise à jour des sliders
  18.     void UpdateSlidersValue(UISlider sourceSlider, UISlider targetSlider)
  19.     {
  20.                 if (Mathf.Abs(sourceSlider.value - targetSlider.value) > 0.300f)
  21.                 {
  22.                         if (sourceSlider.value > targetSlider.value)
  23.                         {
  24.                                 sourceSlider.value = targetSlider.value + 0.300f;
  25.                         }
  26.                         else if (sourceSlider.value < targetSlider.value)
  27.                         {
  28.                                 sourceSlider.value = targetSlider.value - 0.300f;
  29.                         }
  30.         }
  31.                 sourceSlider.ForceUpdate();
  32.                 targetSlider.ForceUpdate();
  33.         }

All work fine before update, now just slider is updated not morph.

Thanks for help

ilanb

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 19
    • View Profile
Re: Multiples UISlider binding Mégafiers morph problem
« Reply #1 on: June 03, 2014, 07:34:07 AM »
Just tested with NGUI version 3.5.9 end work fine  :o
Maybe problem with onChange method on 3.6.2 ?

Thanks

ArenMook

  • Administrator
  • Hero Member
  • *****
  • Thank You
  • -Given: 337
  • -Receive: 1171
  • Posts: 22,128
  • Toronto, Canada
    • View Profile
Re: Multiples UISlider binding Mégafiers morph problem
« Reply #2 on: June 04, 2014, 12:56:42 AM »
Looking at the changes, the only alteration done to UISlider since 359 was adding support of 2D colliders, which won't affect anything.

Are the delegate functions being called? What is your target device? Have you tried making the On Change functions public?

ilanb

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 19
    • View Profile
Re: Multiples UISlider binding Mégafiers morph problem
« Reply #3 on: June 04, 2014, 02:28:39 AM »
Hi Aren,

Target is IOS iPad. (but not work in editor mode too)
I try to change public function and tell you.

Thanks

ilanb

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 19
    • View Profile
Re: Multiples UISlider binding Mégafiers morph problem
« Reply #4 on: June 22, 2014, 05:54:57 AM »
Hi,

Sorry for delay... public Onchange not work too

I have tested with 3.6.5 too same problem.

thx

ArenMook

  • Administrator
  • Hero Member
  • *****
  • Thank You
  • -Given: 337
  • -Receive: 1171
  • Posts: 22,128
  • Toronto, Canada
    • View Profile
Re: Multiples UISlider binding Mégafiers morph problem
« Reply #5 on: June 22, 2014, 11:21:52 PM »
Well, NGUI comes with a bunuch of pre-made controls you can use, sliders being one of them. Try dragging in a Progress Bar (the striped one) then adjusting its Value in inspector. You will see the text change, reflecting the progress percentage. This is done by using the slider's On Change functionality. Note that simply adding the function won't make the slider use it. You actually need to set it in UISlider's On Value Change section in inspector (or use EventDelegate.Add(slider.onChange, YourCallback); in code).

ilanb

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 19
    • View Profile
Re: Multiples UISlider binding Mégafiers morph problem
« Reply #6 on: June 23, 2014, 02:22:28 AM »
Quote
You actually need to set it in UISlider's On Value Change section in inspector (or use EventDelegate.Add(slider.onChange, YourCallback); in code).

Sorry Aren but I already make this, see my first post code :-)

  1. EventDelegate.Add(SliderArea.onChange, OnSliderAreaChange);
  2.         EventDelegate.Add(SliderLoin.onChange, OnSliderLoinChange);
  3.         EventDelegate.Add(SliderHip.onChange, OnSliderHipChange);
  4.         EventDelegate.Add(SliderThigh.onChange, OnSliderThighChange);
  5.         EventDelegate.Add(SliderRib.onChange, OnSliderRibChange);

I'm really disapointed because is simple function and class.

Thanks

ArenMook

  • Administrator
  • Hero Member
  • *****
  • Thank You
  • -Given: 337
  • -Receive: 1171
  • Posts: 22,128
  • Toronto, Canada
    • View Profile
Re: Multiples UISlider binding Mégafiers morph problem
« Reply #7 on: June 24, 2014, 02:39:45 AM »
Sorry somehow I totally skipped past that. I gave the code a try on my end, works as expected. What platform are you trying this on? Did you try making the functions public?

ilanb

  • Newbie
  • *
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Posts: 19
    • View Profile
Re: Multiples UISlider binding Mégafiers morph problem
« Reply #8 on: June 25, 2014, 01:04:47 PM »
Hi Aren,

I use unity 4.5 on OSX maverick and project is build for Webplayer and IPAD, don't work on both.
And yes I have tested with public methods :-)

Thx

ArenMook

  • Administrator
  • Hero Member
  • *****
  • Thank You
  • -Given: 337
  • -Receive: 1171
  • Posts: 22,128
  • Toronto, Canada
    • View Profile
Re: Multiples UISlider binding Mégafiers morph problem
« Reply #9 on: June 26, 2014, 10:13:24 AM »
Well, I don't know what to tell you. I can't reproduce it on my end. Here's a script I wrote:
  1. using UnityEngine;
  2.  
  3. public class Test : MonoBehaviour
  4. {
  5.         void Start ()
  6.         {
  7.                 EventDelegate.Add(GetComponent<UISlider>().onChange, Testing1);
  8.                 EventDelegate.Add(GetComponent<UISlider>().onChange, Testing2);
  9.         }
  10.  
  11.         void Testing1 ()
  12.         {
  13.                 NGUIDebug.Log("1: " + UISlider.current.value);
  14.         }
  15.  
  16.         void Testing2 ()
  17.         {
  18.                 NGUIDebug.Log("2: " + UISlider.current.value);
  19.         }
  20. }
I created a scene, dragged in a simple slider control and attached this script to it.

I tried running it on Windows and Mac, built for Android and Web Player. All works as expected and the values show up visible on the screen.

Clean version of NGUI 3.6.5, Unity 4.5.1.

All I can think of is that you've modified the slider somehow, breaking it. Could that be the case? What type of colliders are you using?