Войти
ПрограммированиеФорумИгровая логика и ИИ

Скрипты по юнити 5 (2 стр)

Страницы: 1 2
#15
21:47, 15 сен. 2018

Помогите не могу понять что делать.

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

public class Score1 : MonoBehaviour
{
  public ScreenFader screenFader;
  [Header("Колличество блоков на старте")]
  public float num;
  [Header("Колличество кликов на уровень")]
  public float click;
  [Header("Загружаемая сцена")]
  public int SceneID;
  [Header("Переиграть уровень")]
  public int SceneRESET;

  public void ToggleActive ()
  {
    gameObject.SetActive (!gameObject.activeSelf);
  }

  void Update ()
  {
    if(gameObject.SetActive)
    {
      num = num + 1;
    }
    if(!gameObject.activeSelf)
    {
      num = num - 1;
    }
    if (num == 0)
    {
      SceneManager.LoadSceneAsync (SceneID);
    }
    if (click == 0)
    {
      SceneManager.LoadSceneAsync (SceneRESET);
    }
  }
}

Нужно короче чтобы при активации кнопке внутренний счет num становился на +1 больше, а при деактивации на -1 меньше.
у этого скрипта ошибка в 24 строке. в чем дело не пойму. У меня версия юнити 5.5.6


#16
(Правка: 17:03) 17:02, 16 сен. 2018

Написал скрипт, все работает но в нем может проявляться баг небольшой помогите исправить

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

public class trigger : MonoBehaviour
{
  [Header("Колличество блоков на старте")]
  public float num;
  [Header("Колличество кликов")]
  public float click;
  [Header("Следующий уровень")]
  public int SceneID;
  [Header("Переиграть уровень")]
  public int SceneRESET;

  void OnTriggerEnter2D(Collider2D other)
  {
    num = num + 1;
  }
  void OnTriggerExit2D(Collider2D other)
  {
    num = num - 1;
    {
      if (num == 0)
      {
        SceneManager.LoadSceneAsync (SceneID);
      }
    }
  }

  void Update ()
  {
    if(Input.GetMouseButtonDown(0))
    {
      click = click - 1;
    }
    if (click == 0) 
    {
      SceneManager.LoadSceneAsync (SceneRESET);
    }
  }
}

нужно дописать условие что если num и click = 0 чтобы грузился следующий уровень, а то сейчас получается перезагрузка текущего уровня.

И еще как можно изменить строчку кода отвечающую за клики мышью, чтобы клик засчитывался только по оъекту

if(Input.GetMouseButtonDown(0))

а то этот клик засчитывается за все клики на экране.

#17
7:11, 17 сен. 2018

Не знаешь как спрайт повернуть и передвинуть обьект в рогалике, а уже рекламу пытаешся впилить.
Люблю такие игры :)

#18
10:32, 17 сен. 2018

так тама прям в юнити пример-сцены и в них скрипты
названия скриптов PersonMove, PersonControl примерно названия. движение и управление персонажем.скрипты уже готовы и подаются вместе с пример-сценами.
  вы чо такие то обделенные интеллектом.

Прошло более 10 месяцев
#19
18:05, 2 авг. 2019

Есть вопрос, сделал проект для мобилки. Вставил рекламу, все работает. Сделал подсчет очков. Но вот с сохранением не получается. Делал через плеер префс. Подскажите что нужно сделать, что прописать и где. Ниже 2 скрипта которые я использую в проекте, функции сохранения стер чтобы вас еще больше не запутать:

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Monetization;

[RequireComponent (typeof (Button))]
public class ADSBUTT : MonoBehaviour
{
  public string placementId = "rewardedVideo";
  private Button adButton;
  private string gameId = "3237316";
  public int scoreAmount;
  Text scoreText;

  void Start ()
  {
    scoreText = GetComponent<Text> ();
    scoreAmount = 0;
    adButton = GetComponent<Button> ();
    if (adButton)
    {
      adButton.onClick.AddListener (ShowAd);
    }

    if (Monetization.isSupported)
    {
      Monetization.Initialize (gameId, true);
    }
  }

  void Update ()
  {
    if (adButton)
    {
      adButton.interactable = Monetization.IsReady (placementId);
    }
  }

  void ShowAd ()
  {
    ShowAdCallbacks options = new ShowAdCallbacks ();
    options.finishCallback = HandleShowResult;
    ShowAdPlacementContent ad = Monetization.GetPlacementContent (placementId) as ShowAdPlacementContent;
    ad.Show (options);
  }

  void HandleShowResult (ShowResult result)
  {
    if (result == ShowResult.Finished)
    {
      Score.scoreAmount += 1;
    }
    else if (result == ShowResult.Skipped)
    {
      Debug.LogWarning ("The player skipped the video - DO NOT REWARD!");
    }
    else if (result == ShowResult.Failed)
    {
      Debug.LogError ("Video failed to show");
    }
  }
}

и

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Score : MonoBehaviour
{
  public static int scoreAmount;
  Text scoreText;

  void Start ()
  {
    scoreText = GetComponent<Text> ();
    scoreAmount = 0;
  }

  void Update ()
  {
    scoreText.text = "" + scoreAmount;
  }
}
#20
13:28, 4 авг. 2019

А что именно не получается/не работает с PlayerPrefs?

Например, такой код для класса Score работает? Если, конечно, я правильно понял, когда нужно сохранять и загружать данные.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Score : MonoBehaviour
{
    const string SCORE_AMOUNT_KEY = "score_amount";

    public static int scoreAmount;
    Text scoreText;

    void Awake() {
        if (PlayerPrefs.HasKey(SCORE_AMOUNT_KEY)) {
            scoreAmount = PlayerPrefs.GetInt(SCORE_AMOUNT_KEY);
        }
        else {
            scoreAmount = 0;
        }
    }

    void Start() {
        scoreText = GetComponent<Text>();
        //scoreAmount = 0;
    }

    void Update() {
        scoreText.text = "" + scoreAmount;
        PlayerPrefs.SetInt(SCORE_AMOUNT_KEY, scoreAmount);
    }
}

Страницы: 1 2
ПрограммированиеФорумИгровая логика и ИИ