Этот вопрос закрыт для ответов, так как повторяет вопрос Сохранение в unity проекте с помощью yandex game?
@Valentin123

Как сделать сохранение в yandex game в unity?

пытался сделать сохранение но не получилось вот что у меня получилось
Можете пожалуйста помочь мучаюсь 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 * гравитация);
}
}
}
  • Вопрос задан
  • 272 просмотра
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы