Beispiel #1
0
	/// <summary>
	/// クリック成立時
	/// </summary>
	public void OnPointerClick(PointerEventData eventData)
	{
		//クリック成立した指番号をリストから除去
		if (this.pointerIdList.Remove(eventData.pointerId))
		{
			//最後の指の時だけクリック成立
			if (this.pointerIdList.Count == 0)
			{
				//長押し判定の中断
				StopAllCoroutines();

				//クリック成立(1フレームだけ通知)
				this.state |= State.Click;
				this.state &= ~State.Pressing;
				StartCoroutine(CoroutineUtility.WaitForEndOfFrameAction(() =>
				{
					this.state = State.None;
				}));

				//イベント実行
				if (this.onClick != null)
				{
					this.onClick.Invoke();
				}
				if (!this.isLong)
				{
					if (this.onShortClick != null)
					{
						this.onShortClick.Invoke();
					}
				}
				else
				{
					if (this.onLongClick != null)
					{
						this.onLongClick.Invoke();
					}
				}
			}
		}
	}
Beispiel #2
0
	/// <summary>
	/// ボタンの範囲外に出た時
	/// </summary>
	public void OnPointerExit(PointerEventData eventData)
	{
		//何も管理していないのでreturn
		if (this.pointerIdList.Count == 0) return;

		//マウスの場合-1しか来ない
		if (eventData.pointerId == -1)
		{
			//管理している指番号を全部除去
			this.pointerIdList.Clear();
		}
		//マウス以外の場合
		else
		{
			//範囲外に出た指番号をリストから除去
			this.pointerIdList.Remove(eventData.pointerId);
		}

		//全ての指がボタンの範囲外に出た
		if (this.pointerIdList.Count == 0)
		{
			//長押し判定の中断
			StopAllCoroutines();

			//キャンセル発生(1フレームだけ通知)
			this.state = State.Cancel;
			StartCoroutine(CoroutineUtility.WaitForEndOfFrameAction(() =>
			{
				this.state = State.None;
			}));

			//イベント実行
			if (this.onCancel != null)
			{
				this.onCancel.Invoke();
			}
		}
	}
Beispiel #3
0
        /// <summary>
        /// シーンアセットバンドルの読み込み
        /// </summary>
        /// <param name="assetBundleName">アセットバンドル名</param>
        /// <param name="onLoad">読み込み完了時コールバック</param>
        public void LoadScenePaths(string assetBundleName, Action <string[]> onLoad = null)
        {
            if (!this.CheckAssetBundleExists(assetBundleName))
            {
                onLoad.SafetyInvoke(null);
                return;
            }

            AssetBundleOperation data = this.resourceList[assetBundleName];
            var assetOperation        = data.FindAssetOperation <SceneAssetOperation>();

            //初めての読み込み
            if (assetOperation == null)
            {
                //アセット管理データさくせい
                assetOperation = new SceneAssetOperation(onLoad);
                data.AddAssetOperation(assetOperation);
                //読み込み開始
                this.UpdateAssetBundleOperation(data);
            }
            //ロード済み
            else if (assetOperation.GetStatus() == AssetOperationBase.Status.isLoaded)
            {
                //1フレーム後にコールバック実行
                StartCoroutine(CoroutineUtility.WaitForFrameAction(1, () =>
                {
                    onLoad.SafetyInvoke(assetOperation.GetAllScenePaths());
                }));
            }
            //ロード中
            else
            {
                //コールバック追加
                assetOperation.AddCallBack(onLoad);
            }
        }
Beispiel #4
0
        /// <summary>
        /// サブアセット読み込み
        /// </summary>
        /// <param name="assetBundleName">アセットバンドル名</param>
        /// <param name="assetName">読み込むアセット名</param>
        /// <param name="onLoad">読み込み完了時コールバック</param>
        public void LoadSubAssets <T>(string assetBundleName, string assetName, Action <T[]> onLoad = null) where T : UnityEngine.Object
        {
            if (!this.CheckAssetBundleExists(assetBundleName))
            {
                onLoad.SafetyInvoke(null);
                return;
            }

            var data           = this.resourceList[assetBundleName];
            var assetOperation = data.FindAssetOperation <SubAssetsOperation <T> >(assetName);

            //初めての読み込み
            if (assetOperation == null)
            {
                //アセット管理データ作成
                assetOperation = new SubAssetsOperation <T>(assetName, onLoad);
                data.AddAssetOperation(assetOperation);
                //読み込み開始
                this.UpdateAssetBundleOperation(data);
            }
            //ロード済み
            else if (assetOperation.GetStatus() == AssetOperationBase.Status.isLoaded)
            {
                //1フレーム後にコールバック実行
                StartCoroutine(CoroutineUtility.WaitForFrameAction(1, () =>
                {
                    onLoad.SafetyInvoke(assetOperation.GetAllAssets());
                }));
            }
            //ロード中
            else
            {
                //コールバック追加
                assetOperation.AddCallBack(onLoad);
            }
        }