пытался сделать сохранение но не получилось вот что у меня получилось
Можете пожалуйста помочь мучаюсь 2 дня
using System.Runtime.InteropServices;
using TMPro;
using UnityEngine;
[System.Serializable]
public class PlayerInfo
{
public int Player;
public int chekpoint;
}
public class Progress : MonoBehaviour
{
public PlayerInfo PlayerInfo;
[DllImport("__Internal")]
private static extern void SaveExtern(string date);
[DllImport("__Internal")]
private static extern void LoadExtern();
[SerializeField] TextMeshProUGUI _playerInfoText;
public static Progress Instance;
private void Awake()
{
if (Instance == null)
{
transform.parent = null;
DontDestroyOnLoad(gameObject);
Instance = this;
LoadExtern();
}
else
{
Destroy(gameObject);
}
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Backspace))
{
PlayerInfo = new PlayerInfo();
Save();
}
}
public void Save()
{
string jsonString = JsonUtility.ToJson(PlayerInfo);
SaveExtern(jsonString);
}
public void SetPlayerInfo(string value)
{
PlayerInfo = JsonUtility.FromJson(value);
if (_playerInfoText)
{
_playerInfoText.text = PlayerInfo.Player + "\n" + PlayerInfo.chekpoint;
}
}
}
и
mergeInto(LibraryManager.library, {
Hello: function () {
window.alert("Hello, world!");
console.log("Hello, world!");
},
GiveMePlayerData: function () {
myGameInstance.SendMessage('Yandex', 'SetName', player.getName());
myGameInstance.SendMessage('Yandex', 'SetPhoto', player.getPhoto("medium"));
},
RateGame: function () {
ysdk.feedback.canReview()
.then(({ value, reason }) => {
if (value) {
ysdk.feedback.requestReview()
.then(({ feedbackSent }) => {
console.log(feedbackSent);
})
} else {
console.log(reason)
}
})
},
SaveExtern: function(date) {
var dateString = UTF8ToString(date);
var myobj = JSON.parse(dateString);
player.setData(myobj);
},
LoadExtern: function(){
player.getData().then(_date => {
const myJSON = JSON.stringify(_date);
myGameInstance.SendMessage('Progress', 'SetPlayerInfo', myJSON);
});
},
SetToLeaderboard : function(value){
ysdk.getLeaderboards()
.then(lb => {
lb.setLeaderboardScore('Height', value);
});
},
});
использование системы.Коллекции;
использование системы.Коллекции.Общие сведения;
использование Unity.Загрузка;
с помощью UnityEngine;
с помощью UnityEngine.Управление сценой;
общедоступный класс RobloxianController : MonoBehaviour
{
Rigidbody rb;
общедоступный класс PlayerInfo
{
}
общедоступный контроллер CharacterController;
общедоступная камера преобразования;
проверка общедоступного преобразования;
общедоступный аниматор-аниматор;
публичная сила тяжести с плавающей точкой = -9,81f;
скорость публичного поплавка = 6f;
скорость прыжка публичного поплавка = 5;
время поворота публичного поплавка = 0.1f;
общедоступное расстояние до земли с плавающей точкой = 0.4f;
Скорость Vector3;
bool прыгает;
общедоступная маска LayerMask Ground mask;
bool заземлен;
bool находится в движении;
публичный прыжок с плавающей точкой = 3f;
скорость вращения с плавающей точкой увеличивается;
[SerializeField] Проигрыватель игровых объектов;
[SerializeField] Список контрольных точек;
[SerializeField] Vector3 vectorPoint;
[SerializeField] плавает мертвым;
// Обновление вызывается один раз за кадр
void Start()
{
Cursor.LockState = CursorLockMode.Заблокировано;
StartCoroutine(ResetJump());
}
IEnumerator ResetJump()
{
while (true)
{
возвращает новое WaitForFixedUpdate();
isJumping = false;
}
}
void Update()
{
isGrounded = Физика.Контрольная сфера (groundCheck.position, groundDistance, groundMask);
float horizontal = Ввод.Получаем axisraw ("Горизонтальный");
float vertical = ввод.Получаем Axisraw ("Вертикальный");
Направление вектора 3 = новый Вектор3 (горизонтальный, 0f, вертикальный).нормализованный;
если (направление.магнитуда >= 0.1f)
{
float targetAngle = Mathf.Atan2(direction.x, direction.z) * Mathf.Rad2Deg + cam.eulerAngles.y;
плавающий угол = Mathf.SmoothDampAngle(transform.eulerAngles.y, targetAngle, ref Turns moothvelocity, Turns moothtime);
transform.rotation = Кватернион.Эйлер (0f, угол, 0f);
Vector3 moveDir = Кватернион.Euler(0f, targetAngle, 0f) * Vector3.forward;
controller.Move(moveDir.normalized * speed * Time.deltaTime);
isMoving = true;
}
if (Ввод.GetButtonDown("Прыжок") && заземлен (&& !прыгает)
{
StartCoroutine(Jump());
}
if (direction.magnitude <= 0.0f)
{
isMoving = false;
}
if (обОсновано != true)
{
аниматор.setBool ("Robloxian In Air", верно);
}
else
{
аниматор.SetBool("Robloxian In Air", false);
isJumping = false; // Сбрасываем флаг isJumping в false при приземлении
}
if (isMoving)
{
animator.setBool ("Роблоксиан в движении", true);
}
else if (!движется)
{
аниматор.setBool ("Роблоксиан в движении", false);
}
скорость.y + = сила тяжести * Время.;
контроллер.Перемещение (скорость * Время.Скорость);
если (игрок.трансформация.позиция.y < -мертв)
{
player.transform.position = векторная точка;
}
IEnumerator Jump()
{
isJumping = true;
скорость.y = Mathf.Sqrt (высота прыжка * -2f * гравитация);
возвращает новые секунды ожидания (0.1f);
isJumping = false;
}
}
public void OnTriggerEnter (Collider other)
{
Векторная точка = player.transform.position;
Уничтожить (другой игровой объект);
if (other.GameObject.CompareTag("Трамплин"))
{
скорость.y = Mathf.Sqrt(8f * -2f * gravity);
}
else if (other.GameObject.CompareTag("JumpPadToSky"))
{
скорость.y = Mathf.Sqrt(40f * -2f * гравитация);
}
else if (other.GameObject.CompareTag("JumpPadMush"))
{
скорость.y = Mathf.Sqrt(52f * -2f * гравитация);
}
}
}
Вопрос задан
22 янв.
272 просмотра