Unity 中 启动页 滚动 代码实现

本文介绍了在Unity中创建启动页滚动效果的步骤。首先,通过在Plane上放置三张图片并调整Canvas的缩放模式。接着,编写脚本并在Update函数中监听手机移动,利用iTween库平滑地移动UI元素,实现滚动效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启动页代码实现

1.创建一个Plane,并在Plane下放入三张图片


2.注意Canvas的缩放模式, 这样就能直接将Plane的缩放改为3倍了


3.编写脚本代码 挂在Plane上

(在Update中判断手机移动,然后使用iTween来移动UI)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class PageControl : MonoBehaviour {

	public GameObject rectTrans;
	private Vector3 originPos;
	private Vector2 nowPos;

	public Image page0;
	public Image page1;
	public Image page2;

	public GameObject startBtn;
	int num;
	private Vector3 originTrans;

	public GameObject loadText;

	// Use this for initialization
	void Start () {
		SetPageNum ();
		originTrans = rectTrans.transform.position;
		Debug.Log ("x======"+ originPos.x);
	}
	
	// Update is called once per frame
	void Update () {
	 	judgeFinger ();
		if (Application.platform == RuntimePlatform.Android && (Input.GetKeyDown (KeyCode.Escape))) {
			Application.Quit ();
		}
		if (Application.platform == RuntimePlatform.Android && (Input.GetKeyDown (KeyCode.Home))) {
			Application.Quit ();
		}
	}


	void judgeFinger()
	{
		if (Input.touchCount == 0 ) {
			return;
		}

		if (Input.GetTouch (0).phase == TouchPhase.Began) {
			originPos = Input.GetTouch (0).position;
		}
		if (Input.GetTouch (0).phase == TouchPhase.Moved) {
			nowPos = Input.GetTouch (0).position;
		}
		if (Input.GetTouch (0).phase == TouchPhase.Ended) {
			if (nowPos.x - originPos.x > 100) {
				Debug.Log ("后退"  );
				Retreat ();
			}
			if (nowPos.x - originPos.x < -100) {
				Debug.Log ("前进");
				Advance ();
			}
			nowPos = new Vector3 (0, 0, 0);
			originPos = new Vector3 (0, 0, 0);
		}
	}

	private void Retreat()
	{
		if (num == 0) {
			return;
		}
		num--;
		iTween.MoveTo(rectTrans,iTween.Hash("x",(originTrans.x - Screen.width * num),"time",0.7f));
		if (num == 2) {
			startBtn.SetActive (true);
		} else {
			startBtn.SetActive (false);
		}
		SetPageNum ();
	}

	private void Advance()
	{
		
		if (num == 2) {
		//	SceneManager.LoadScene ("Main");
			return;
		}
		
		num++;
		iTween.MoveTo(rectTrans,iTween.Hash("x",(originTrans.x -Screen.width * num),"time",0.7f));
		if (num == 2) {
			startBtn.SetActive (true);
		}else {
			startBtn.SetActive (false);
		}
		SetPageNum ();
	}


	private void SetPageNum()
	{
		if (num == 0) {
			page0.enabled = true;
			page1.enabled = false;
			page2.enabled = false;
		}
		if (num == 1) {
			page0.enabled = false;
			page1.enabled = true;
			page2.enabled = false;
		}
		if (num == 2) {
			page0.enabled = false;
			page1.enabled = false;
			page2.enabled = true;
		}	
	}


	public void StartGame()
	{
		SceneManager.LoadScene ("Main");
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值