Cool "3d" scoll view for Unity3D 4.x and 5.x version NGUI and UGUI support
Using Unity3d's AnimationCurve to finish this EnhancedScrollView.AnimationCurve is very powerful and useful tools in developing game,the player's jumping, camera's path and so on.
- Click left right button to recenter item
- Click target to recenter and select item
- Drag feature: drag enhanceScrollview to recenter item
- Update item status with Curve horizontal time changing
- Edit control curves for scale, position, and "depth", you can add your own curve to control item other properties
- NGUI 2d, world 3d, and UGUI support
- Position Curve. Control item's position.
- Scale Curve. Control item's scale
- "Depth" Curve. For determine item's back and front relationship, It's can be UIWidget's depth in NGUI(2D) or the Item's Z position value in 3D world
drag feature(Done)- animation curve editor(you can type the value for the KeyFrame)
UGUI example(Done)- ......
Easy to make your own Enhance Item
- open NGUIEnhanceScrollView.unity for NGUI example
- open UGUIEnhanceScrollView.unity for UGUI example
Easy way to make better Curve: Copy EnhancedScrollView Component in example and paste it to your own TargetScrollView
///
/// NGUI Enhance item example
///
public class MyNGUIEnhanceItem : EnhanceItem
{
private UITexture mTexture;
......
// Set the item "depth" 2d or 3d
protected override void SetItemDepth(float depthCurveValue, int depthFactor, float itemCount)
{
if (mTexture.depth != (int)Mathf.Abs(depthCurveValue * depthFactor))
mTexture.depth = (int)Mathf.Abs(depthCurveValue * depthFactor);
}
// Item is centered
public override void SetSelectState(bool isCenter)
{
if (mTexture == null)
mTexture = this.GetComponent();
if (mTexture != null)
mTexture.color = isCenter ? Color.white : Color.gray;
}
......
}
///
/// UGUI Enhance item example
///
public class MyUGUIEnhanceItem : EnhanceItem
{
private Button uButton;
private RawImage rawImage;
......
private void OnClickUGUIButton()
{
OnClickEnhanceItem();
}
// Set the item "depth" 2d or 3d
protected override void SetItemDepth(float depthCurveValue, int depthFactor, float itemCount)
{
curDepth = (int)(depthCurveValue * itemCount);
this.transform.SetSiblingIndex(curDepth);
}
public override void SetSelectState(bool isCenter)
{
if (rawImage == null)
rawImage = GetComponent();
rawImage.color = isCenter ? Color.white : Color.gray;
}
......
}
If you have some cool ideas or bugs just share with us or open issues
MIT