目前分類:未分類文章 (2)

瀏覽方式: 標題列表 簡短摘要

  unity跟 android的互動,網路上有些教學是建立 AndroidManifest.xml 還有同包名的 jar檔,放進 Unity然後再壓出來。其實跟本不用那麼麻煩,可以先壓好 unity的 android專案,然後再將 jar檔放進 lib資料夾底下就行了。所以只要先建立好方法, jar包可以隨時替換。


 

初學者日記 發表在 痞客邦 留言(0) 人氣()

以下為 ScrollView物件循環腳本,有註記就不多做解釋了

using UnityEngine;
using System.Collections.Generic;

public class Loop : MonoBehaviour {
  public List prefab;  // grid裡的所有物件
  public UIScrollView scrollview;

  private List child;

  private List intlist;  // 資料

  float move = 110;  // 移動距離

  bool b;  // 是否開始拖動

  void Start ()
 {
    child = new List();

    // 註冊 grid裡的所有物件
    for (int i = 0; i < transform.childCount; i++)
    {
      Elements e = new Elements();
      e.widget = transform.GetChild(i).GetComponent();
      e.index = i;
      child.Add(e);
    }

    intlist = new List();
    for(int i=1;i<21;i++)intlist.Add(i);

    // 註冊 ScrollView拖動事件
    scrollview.onDragStarted = DragStart;  // 開始
    scrollview.onDragFinished = DragEnd;  // 結束
  }

  void DragStart()
  {
    b = true;
  }

  void DragEnd()
  {
    b = false;
  }
        
        void Update () {
    if (!b) return;  // 是否開始拖動

    // 當元素 1與 2為不可見,代表正在往下滑
    // 偵測是否缺下一筆資料
    if (child[0].widget.isVisible == false && child[0].widget.isVisible == false)
    {
      Elements u = child[0];

      // 如過預取得資料位置沒超出
      if (child[0].index + prefab.Count < intlist.Count)
      {
        // 重新定位該元素
        Transform tt = child[0].widget.transform;
        tt.localPosition = new Vector3(tt.localPosition.x, tt.localPosition.y - move * prefab.Count, tt.localPosition.z);

        // 元素資料改變
        u.index += prefab.Count;  // 更新現在資料位置
        u.widget.transform.GetChild(0).GetComponent().text = intlist[u.index].ToString();  // 元素資料傳遞

        // 元素順序改變
        child.RemoveAt(0);
        child.Add(u);
      }
    }
    // 當元素 1可見,倒數第1 與倒數 2為不可見,代表可往上滑
    // 偵測是否缺上一筆資料
    else if (child[0].widget.isVisible == true && child[child.Count - 1].widget.isVisible == false && child[child.Count - 2].widget.isVisible == false)
    {
      Elements u = child[prefab.Count-1];

      // 如過有預取得資料位置
      if (u.index - prefab.Count > -1)
      {
        Transform tt = child[prefab.Count - 1].widget.transform;
        tt.localPosition = new Vector3(tt.localPosition.x, tt.localPosition.y + move * prefab.Count, tt.localPosition.z);

        // 元素資料改變
        u.index -= prefab.Count;  // 更新現在資料位置
        u.widget.transform.GetChild(0).GetComponent().text = intlist[u.index].ToString();  // 元素資料傳遞

        // 元素順序改變
        child.RemoveAt(prefab.Count - 1);
        child.Insert(0, u);
      }
    }
  }

  struct Elements
  {
    public UIWidget widget;  // 該元素的 UIWidget
    public int index;  // 資料位置
  }
}


初學者日記 發表在 痞客邦 留言(0) 人氣()