这个问题的解决方案如下:

public class PhotoAlbum : MonoBehaviour
{
    // 公共组件变量
    public GameObject canvas;
    public Image photoPreview1, photoPreview2;

    // 图片数组
    public Photograph[] savedPictures;

    // 指针位置
    private int i = 0;

    private void Update()
    {
        // 检测 I 键是否被按下
        if (Input.GetKeyDown(KeyCode.I))
        {
            // 指针位置超过图片数量,设置其为 0
            i = Mathf.Clamp(i, 0, savedPictures.Length - 1);

            // 检测是否有可用图片
            if (savedPictures.Length > 0)
            {
                // 显示第一张图片
                photoPreview1.sprite = savedPictures[i].sprite;

                // 移动指针到下一张图片,超出数量后回到头部
                i = (i + 1) % savedPictures.Length;

                // 显示第二张图片(如果有多张)
                if (savedPictures.Length > 1)
                {
                    // 显示第一张图片
                    if (i == 0)
                    {
                        photoPreview2.sprite = savedPictures[savedPictures.Length - 1].sprite;
                    }
                    else
                    {
                        photoPreview2.sprite = savedPictures[i - 1].sprite;
                    }
                }
            }
        }
    }

    // 将新照片存入照片册
    public void SaveNewPhoto(Photograph photoToAdd)
    {
        // 检测剩余可用位置是否满足
        if (savedPictures.Length > 0)
        {
            // 将新照片添加到最末尾的位置
            savedPictures = ResizeArray(savedPictures, 1);

            // 存储新照片
            savedPictures[savedPictures.Length - 1] = photoToAdd;
        }
        else
        {
            // 新建 1 个位置的新数组
            savedPictures = new Photograph[1];

            // 存储新照片
            savedPictures[0] = photoToAdd;
        }
    }

    // 对数组进行动态扩展或缩小
    private Photograph[] ResizeArray(Photograph[] arr, int diff)
    {
        Photograph[] newArr = new Photograph[arr.Length + diff];

        Array.Copy(arr, newArr, arr.Length);

        return newArr;
    }
}

注意:

  1. 我们使用的 savedPictures 数组是一个动态长度的数组,可以根据需要扩展或缩小。
  2. 当检查剩余可用位置是否满足时,也有多种方法可以实现。
  3. 我们使用 ResizeArray 方法来创建新的数组来存储新照片,这可以动态地改变数组长度,使得我们不必事先设置好一个指定长度的数组。ReszieArray 方法会根据传入的 diff 个数来扩展或缩小一个数组。