ローミングスクリプト

6465 ワード

以前は不動産をするときに100枚の画像を指でスライドさせて、画像を切り替える必要がありました.参考までに本日保存いたします
using UnityEngine;
using System.Collections;

public class Manyou : MonoBehaviour 
{

    public string m_CurrentPath = string.Empty;

    public float speed = 0.1f;

    public float AutoSpeed = 1;

    public int maxNum = 300;

    public int currentIndex = 0;
	
	public bool IsMveX= true;
	
	
	public bool IsStartFadeAnimation = false;
	
   // public manyouButton button;

    public UITexture swapGui;
	public UITexture narrow;
	
    //public bool AutoPlay = false;
    public bool canPlay = true;

    public GameObject Fadein;
    public GameObject FadeOut;
	
	public delegate void RestEvent(); 
	public RestEvent rest;
	
	public bool LoadFromStreamAssect=false;

    float temp = 0;
	
	public bool AutoPlay = false;
	
	public string narrowsPath = "Map/";
	public void InitFirstImage()
	{
		currentIndex = 0;
		string path = string.Format(m_CurrentPath, 0);
        Texture text = (Texture)Resources.Load(path) as Texture;
        Material mater = new Material(Shader.Find("Unlit/Transparent Colored"));
		Destroy (mater .mainTexture);
		mater.mainTexture = text;
        swapGui.material = mater;
		Resources.UnloadUnusedAssets();
		if(narrow != null)  StartCoroutine(loadMap(0));
	}
	
	public void InitData(string path, int Length)
	{
		currentIndex = 0;
		this.m_CurrentPath = path;
		this.maxNum = Length;
	    InitFirstImage();
	}
	
	
    void Update()
    {
        if (enabled && canPlay && AutoPlay)
        {
			temp+=AutoSpeed;
           if (temp >= 1)
           {
               currentIndex++;
               swapImg(Vector2.zero);
               temp = 0;
           }
        }
    }
	
    void OnEnable()
    {
        FingerGestures.OnLongPress += OnLongPress;
       FingerGestures.OnDragMove += OnDragMove;
        FingerGestures.OnFingerUp += OnFingerUp;
		
		//WinGesture.Instance.OnDragMove+=OnDragMove;
		
    }

    void OnDisable()
    {

        FingerGestures.OnLongPress -= OnLongPress;
        FingerGestures.OnFingerUp -= OnFingerUp;
        FingerGestures.OnDragMove -= OnDragMove;
        
    }
	
    void OnFingerUp(int fingerIndex, Vector2 fingerPos, float timeHeldDown)
    {
          AutoPlay = false;
    }
 
    void OnLongPress(Vector2 fingerPos)
    {
        AutoPlay = true;
    } 
    void OnDragMove(Vector2 fingerPos, Vector2 delta)
    {
        if (canPlay)  swapImg(delta);
    }
	
    void swapImg(Vector2 delta)
    {
		if(IsMveX){
			Debug.Log(currentIndex +"  "+(int)(delta.x * speed));
        	currentIndex -= (int)(delta.x * speed);
		}else{
			Debug.Log(currentIndex +"  "+((int)(delta.y * speed)) + " " + delta.x+ "  " + speed);
			 currentIndex -= (int)(delta.y * speed);
			Debug.Log("CurrentIndex="+currentIndex);
		}
		
		
		if (currentIndex > maxNum) {
			
			if(IsStartFadeAnimation && AutoPlay)
			{
				MyClamp();
				if(rest != null) rest();
				return;
			}
			currentIndex = 0;
		}
		if (currentIndex < 0) 	currentIndex = maxNum;
		
		
		
		
		if (LoadFromStreamAssect)
		{
			StartCoroutine(LoadImg());
			return ;
		}
		
        string path = string.Format(m_CurrentPath, currentIndex);

        Texture text = (Texture)Resources.Load(path) as Texture;

        Material mater = new Material(Shader.Find("Unlit/Transparent Colored"));
		
		Destroy (mater .mainTexture);
       
		mater.mainTexture = text;

        swapGui.material = mater;
		
		Resources.UnloadUnusedAssets();
		
		if(narrow != null) StartCoroutine(loadMap(currentIndex));
    }
	
	void OnGUI()
	{
		if(GUI.Button(new Rect(10,10,100,50), "Add"))
		{
			AutoSpeed += 0.1f;
		}
		else if(GUI.Button(new Rect(10,70,100,50), "Subtract"))
		{
			AutoSpeed -= 0.1f;
		}
		GUI.color = Color.red;
		GUI.Label(new Rect(10,150,100,50),AutoSpeed+"");
	}
	
	
	IEnumerator loadMap(int index)
	{
		 	string path = string.Format(narrowsPath + m_CurrentPath, index);
			WWW www =new WWW("file://"+Application.streamingAssetsPath+"/"+path+".png");
			 yield return www ;
			Material mater = new Material(Shader.Find("Unlit/Transparent Colored"));
			 Destroy (mater .mainTexture);
	         mater.mainTexture = www.texture;
	         narrow.material = mater;
			 canPlay =true;
			 Resources.UnloadUnusedAssets();
	}
	
	
	WWW www;
	IEnumerator LoadImg()
	{
		canPlay=false;
		
		string path=string.Format(m_CurrentPath,currentIndex);
		
		Debug.Log(currentIndex);
		
		www =new WWW("file://"+Application.streamingAssetsPath+"/"+path+".jpg");
		
		yield return www ;
		
		Material mater = new Material(Shader.Find("Unlit/Transparent Colored"));
		
		Destroy (mater .mainTexture);
		
        mater.mainTexture = www.texture;
		
        swapGui.material = mater;
        
		canPlay =true;
	
		Resources.UnloadUnusedAssets();
	}
	

    void MyClamp()
    {
        if (currentIndex <= 0)
            //currentIndex = 0;
			currentIndex = maxNum;
        if (currentIndex > maxNum)
        {
            canPlay = false;
            StartCoroutine(Fade(1f));
        }
    }

    public void Reset()
    {
        AutoPlay = false;
        StartCoroutine(Fade(1f));
    }
    public void AutoRun()
    {
       	AutoPlay = true;
    }
	
    IEnumerator Fade(float timer)
    {
	
        
		GameObject fadein= Instantiate(FadeOut) as GameObject;
		string path=null;
		Material mater;

        currentIndex = 0;
		
		if (LoadFromStreamAssect)
		{
		path=string.Format(m_CurrentPath,currentIndex);
		
		Debug.Log(currentIndex);
		
		www =new WWW("file://"+Application.streamingAssetsPath+"/"+path+".jpg");
		
		yield return www ;
		
		mater = new Material(Shader.Find("Unlit/Transparent Colored"));
		
		Destroy (mater .mainTexture);
		
        mater.mainTexture = www.texture;
		
        swapGui.material = mater;
        
		canPlay =true;
			Destroy(fadein);
	
		Resources.UnloadUnusedAssets();
			yield break;
		}

        path = string.Format(m_CurrentPath, currentIndex);

        Texture text = (Texture)Resources.Load(path) as Texture;

        mater = new Material(Shader.Find("Unlit/Transparent Colored"));

        mater.mainTexture = text;

        swapGui.material = mater;
		
		
        yield return new WaitForSeconds(timer);
		
        Destroy(fadein);

        canPlay = true;
 		AutoPlay = false;
    }

  
	
}