Menu
CoddyTech

最新のものを取り消す

CoddyのUnityジャーニー「Unityスクリプトの基礎」セクションの一部。レッスン 66/85。

リストの最新の項目は最後の項目で、インデックスは Count - 1 です。Remove で取り出し、まず Count > 0 か確認しましょう。リストが空の場合、最後の項目は存在せず、読み取ろうとすると ArgumentOutOfRangeException が発生してスクリプトが停止します。

if (coins.Count > 0)
{
    GameObject last = coins[coins.Count - 1];
    coins.Remove(last);
    Destroy(last);
}

リストから項目を削除しても、シーン内のオブジェクトには影響しません。自分で非表示にするか、破棄してください。

challenge icon

チャレンジ

中級

Spaceキーで最新のボックスを取り除きます。

  1. Update()内で、Input.GetKeyDown(KeyCode.Space)が押され、かつboxes.Count > 0の場合に限り、GameObject newest = boxes[boxes.Count - 1];を取得します。
  2. newest.SetActive(false);で非表示にし、boxes.Remove(newest);で取り除きます。
  3. "Boxes: " + boxes.Countをログに出力します。

「プレイ」を押して3回クリックし、その後Spaceキーを押します。最後のボックスが消えます。次に「確認」を押します。

自分で試してみよう

using System.Collections.Generic;
using UnityEngine;

public class BoxStacker : MonoBehaviour
{
    public GameObject boxPrefab;
    List<GameObject> boxes = new List<GameObject>();

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 spot = transform.position + new Vector3(boxes.Count * 1.5f, 0, 0);
            GameObject box = Instantiate(boxPrefab, spot, Quaternion.identity);
            boxes.Add(box);
            Debug.Log("Boxes: " + boxes.Count);
        }

        // Space: 最新のボックスを非表示にし、リストから削除する
    }
}

Unityスクリプトの基礎のすべてのレッスン

自分で練習してみよう: Unityプレイグラウンド