Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using UnityEngine.SceneManagement;
- using System.Collections.Generic;
- public class GameManager : MonoBehaviour
- {
- public static GameManager instance;
- public GameObject playerPrefab;
- private GameObject currentPickedObject;
- private Dictionary<string, GameObject> objectPrefabs = new Dictionary<string, GameObject>();
- private Vector3 playerSpawnPosition;
- private string pickedObjectName;
- private Vector3 pickedObjectPosition;
- private void Awake()
- {
- if (instance == null)
- {
- instance = this;
- DontDestroyOnLoad(gameObject);
- }
- else
- {
- Destroy(gameObject);
- }
- }
- public void RegisterObjectPrefab(string key, GameObject prefab)
- {
- if (!objectPrefabs.ContainsKey(key))
- {
- objectPrefabs.Add(key, prefab);
- Debug.Log($"Registered prefab with key: {key}");
- }
- }
- public void SetPickedObject(GameObject pickedObject)
- {
- if (pickedObject == null)
- {
- currentPickedObject = null;
- pickedObjectName = null;
- return;
- }
- string objectName = pickedObject.name.Replace("(Clone)", "").Trim();
- Debug.Log($"Setting picked object: {objectName}");
- if (currentPickedObject != null)
- {
- Destroy(currentPickedObject);
- }
- if (objectPrefabs.ContainsKey(objectName))
- {
- pickedObjectName = objectName;
- pickedObjectPosition = pickedObject.transform.position;
- currentPickedObject = pickedObject;
- currentPickedObject.transform.SetParent(null);
- DontDestroyOnLoad(currentPickedObject);
- }
- else
- {
- Debug.LogError($"Object prefab not found for {objectName}");
- currentPickedObject = null;
- pickedObjectName = null;
- }
- }
- public GameObject GetPickedObject()
- {
- return currentPickedObject;
- }
- public void SetPlayerSpawnPosition(Vector3 position)
- {
- playerSpawnPosition = position;
- }
- public void TransferPickedObject(Transform playerTransform)
- {
- if (currentPickedObject != null)
- {
- currentPickedObject.transform.SetParent(playerTransform);
- currentPickedObject.transform.localPosition = Vector3.zero; // Adjust as needed
- }
- }
- public void SpawnPlayer()
- {
- GameObject[] players = GameObject.FindGameObjectsWithTag("Player");
- if (players.Length > 1)
- {
- Debug.LogWarning("Multiple players detected! Destroying extras...");
- for (int i = 1; i < players.Length; i++)
- {
- Destroy(players[i]);
- }
- }
- GameObject existingPlayer = players.Length > 0 ? players[0] : null;
- if (existingPlayer == null)
- {
- GameObject player = Instantiate(playerPrefab, playerSpawnPosition, Quaternion.identity);
- DontDestroyOnLoad(player);
- if (currentPickedObject != null)
- {
- currentPickedObject.transform.SetParent(player.transform);
- currentPickedObject.transform.localPosition = Vector3.zero; // Adjust as needed
- }
- }
- else
- {
- // Update player position if player already exists
- existingPlayer.transform.position = playerSpawnPosition;
- if (currentPickedObject != null)
- {
- currentPickedObject.transform.SetParent(existingPlayer.transform);
- currentPickedObject.transform.localPosition = Vector3.zero; // Adjust as needed
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement