Unity フワフワ動くボタンの作成

※この説明は、UniTaskの使用が前提となります。
UniTaskについては、以下のページを参照してください。
みてー。
Unityのボタン自体をコードで動かす方法を考えてみた。
 
    
へー。
ボタンを押したら、アクションするのではなくて、最初から動いている感じですか。
 
 
うん。
作ってみるね。
 
 
 まずは、2Dの方で新しいプロジェクトを作成して、ヒエラルキーウインドウの左上から「UI」→「Button - TextMeshPro」を押してボタンを作成する。
       
 
「Import TMP Essentials 」と「Import TMP Examples and Extras」は両方インポートする。
       
 
作成したボタンを中央に配置するために、InspectorのPosXとPosYを0に変更する。
       
 


下のようにボタンに名前をつける。今回は「FuwaFuwaButton」っていう名前にした。
この名前は、コードで指定する時に使うので重要。
 
 
コードについては、以下のように作成したよ。
       
 
【FuwaFuwa001.cs】
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cysharp.Threading.Tasks;//UniTaskを使うために必要
public class FuwaFuwa001 : MonoBehaviour
{
    void Start () 
    {
        ugoki001();               
    }
    async void ugoki001()
    {
        for(int i = 0; i < 100; ++i)
        {
            Vector2 iti = GameObject.Find("FuwaFuwaButton").transform.position;
            GameObject.Find("FuwaFuwaButton").transform.position = new Vector2(iti.x + 0.15f, iti.y + 0.05f);
            await UniTask.Delay(10);
        }
        ugoki002();
    }
    async void ugoki002()
    {
        for(int i = 0; i < 100; ++i)
        {
        Vector2 iti = GameObject.Find("FuwaFuwaButton").transform.position;
            GameObject.Find("FuwaFuwaButton").transform.position = new Vector2(iti.x - 0.1f, iti.y + 0.03f);
            await UniTask.Delay(10);
        }
        ugoki003();
    }
    async void ugoki003()
    {
        for(int i = 0; i < 100; ++i)
        {
        Vector2 iti = GameObject.Find("FuwaFuwaButton").transform.position;
            GameObject.Find("FuwaFuwaButton").transform.position = new Vector2(iti.x - 0.05f, iti.y - 0.08f);
            await UniTask.Delay(10);
        }
        ugoki001();
    }
}
  
スクリプトを実行するために、空のオブジェクトを作成して、そこにアタッチする。
       
 
それから、再生ボタンをクリックするとふわふわ動くよ!
       
 

ゲームを盛り上げる一つのエフェクトとして使えそうですね。
       
 
お名前




