我知道我又回来了,所以你们最近的帮助已经很多了。
有一点我需要求助的非常重要,但我得到了很多帮助。有几个迷你游戏,它们都在自己的独立场景中,通过主副本访问。完成一个迷你游戏后,它对应的布尔值会变为真,然后计数的进度会被添加。我想让游戏检查哪些迷你游戏被完成,并在主场景中显示一个五角星,当玩家被发送回它时。另外,我想要让“结束”按钮显示在所有迷你游戏被完成时。以下是这些脚本。
管理器:
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;
}
}
感谢你们所有的帮助,我十分感激!如果你们有任何有用的建议我一定会尝试去做。
评论 (0)