我知道我又回来了,所以你们最近的帮助已经很多了。

有一点我需要求助的非常重要,但我得到了很多帮助。有几个迷你游戏,它们都在自己的独立场景中,通过主副本访问。完成一个迷你游戏后,它对应的布尔值会变为真,然后计数的进度会被添加。我想让游戏检查哪些迷你游戏被完成,并在主场景中显示一个五角星,当玩家被发送回它时。另外,我想要让“结束”按钮显示在所有迷你游戏被完成时。以下是这些脚本。

管理器:

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

public class GameManager : MonoBehaviour
{

  public static GameManager instance;
  private int progress = 0;

  private bool pondGameDone = false;
  private bool appleGameDone = false;
  private bool matchGameDone = false;
  public bool stableGameDone = false;

  Scene currentScene;
  string sceneName;

  void Start()
  {
    currentScene = SceneManager.GetActiveScene();
    sceneName = currentScene.name;

    Debug.Log(sceneName);
  }

  void Awake()
  {
    if (instance != null)
    {
      Destroy(gameObject);
    }
    else
    {
      instance = this;
      DontDestroyOnLoad(gameObject);
    }
  }

  private void AddProgress()
  {
    progress += 1;
  }

  public void PondGameDone()
  {
    if(pondGameDone == false)
    {
      Debug.Log("PondGame done");
      pondGameDone = true;
      AddProgress();
    }
  }

  public void AppleGameDone()
  {
    if(appleGameDone == false)
    {
      Debug.Log("AppleGame done");
      appleGameDone = true;
      AddProgress();
    }
  }

  public void StableGameDone()
  {
    if(stableGameDone == false)
    {
      Debug.Log("StableGame done");
      stableGameDone = true;
      AddProgress();
    }
  }

  public void MatchGameDone()
  {
    if(matchGameDone == false)
    {
      Debug.Log("MatchGame done");
      matchGameDone = true;
      AddProgress();
    }
  }

}

主管理器:

using Unity.VisualScripting;
using UnityEngine;

public class HubManager : MonoBehaviour
{
    public GameManager gm;
    public GameObject star1;
    public GameObject star2;
    public GameObject star3;
    public GameObject star4;

    public GameObject endButton;

    void Start()
    {
        star1.SetActive(false);

        if(gm.stableGameDone == true)
        {
            star1.SetActive(true);
        }
    }
}

另一个问题我在遇到的麻烦的是一个拖拽脚本。我的目标是使玩家能够拖拽某些游戏对象,但尽量避免它去碰到障碍物。而我所找到的脚本做了一定的工作,但拖拽的对象就会慢慢地去跟随鼠标,而不是立即的。所以我想要让它立即跟随鼠标,而不去拉动拖拽的速度。以下脚本也是:

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(CircleCollider2D))]

public class Drag : MonoBehaviour {
private Vector3 screenPoint;
private Vector3 offset;
 float camDistance;
    private void OnMouseDown()
    {
        camDistance = Vector3.Distance(transform.position, Camera.main.transform.position);
    }
    private void OnMouseDrag()
    {
        Vector3 mousePosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, camDistance);
        Vector3 objPosition = Camera.main.ScreenToWorldPoint(mousePosition);
        transform.position = objPosition;
    }
}

感谢你们所有的帮助,我十分感激!如果你们有任何有用的建议我一定会尝试去做。