GithubHelp home page GithubHelp logo

swipswaps / enhancedscrollview Goto Github PK

View Code? Open in Web Editor NEW

This project forked from tinyantstudio/enhancedscrollview

0.0 0.0 0.0 24.37 MB

Cool 3d scoll view for Unity(NGUI 3D UGUI support)

C# 96.96% ShaderLab 3.04%

enhancedscrollview's Introduction

EnhancedScrollView

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.

Features

  1. Click left right button to recenter item
  2. Click target to recenter and select item
  3. Drag feature: drag enhanceScrollview to recenter item
  4. Update item status with Curve horizontal time changing
  5. Edit control curves for scale, position, and "depth", you can add your own curve to control item other properties
  6. NGUI 2d, world 3d, and UGUI support

Curves In Project

  1. Position Curve. Control item's position.
  2. Scale Curve. Control item's scale
  3. "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

In developing task

  1. drag feature (Done)
  2. animation curve editor(you can type the value for the KeyFrame)
  3. UGUI example(Done)
  4. ......

How to use

Easy to make your own Enhance Item

  1. open NGUIEnhanceScrollView.unity for NGUI example
  2. 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;
    }
    ......
}

ScreenShot

screenshot

If you have some cool ideas or bugs just share with us or open issues

enhancedscrollview's People

Contributors

frideal avatar tinyantstudio avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.