возникает ошибки при запуске приложения в unity
На unity хочу вставить рекламу в кликер.
Ошибки:
1)Assets\Scenes\NewBehaviourScript.cs(56,17):errorCS0116:A namespace cannot directly contain members such as fields or methods
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Monetization;
using UnityEngine.EventSystems;
public class NewBehaviourScript : MonoBehaviour
{
public int score;
public Text clicktext;
void Start()
{
if (Monetization.isSupported) Monetization.Initialize("3969489",false);
}
}
public void OnPointerClick(PointerEventData eventData)
{
if (Monetization.IsReady("Video"))
{
ShowAdCallbacks options = new ShowAdCallbacks();
options.finishCallback = HandleShowResult;
ShowAdPlacmentContent ad = Monetization.GetPlacementContent("Video") as ShowAdPlacmentContent;
ad.Show(options);
}
void HandleShowResult(ShowResult result)
{
if (result == ShowResult.finished)
{
void doublecoin();
}
else if (result == ShowResult.Skipped)
{// авр
}
else if (result == ShowResult.Failed)
{// выап
}
}
{
score = 0;
score = PlayerPrefs.GetInt("Score+",score);
}
void Update()
{
clicktext.text = score.ToString();
}
}
#region Dima
public void ClickerScore()
{
score++;
PlayerPrefs.SetInt("Score+",score);
}
public void Reset()
{
PlayerPrefs.DeleteAll();
score = 0;
}
#endregion
Ответы (2 шт):
У вас сбиты скобки, удалите одну после метода Start и добавте в конце файла.
у вас класс закрывается раньше, перед методами
#region Dima
public void ClickerScore()
{
score++;
PlayerPrefs.SetInt("Score+",score);
}
public void Reset()
{
PlayerPrefs.DeleteAll();
score = 0;
}
#endregion
закрывающую фигурную скобку поместите со строки, расположенной перед этим регионом, в самый конец
Разберитесь в своём коде (если это ваш код). Отформатируйте его как следует и посмотрите что все фигурные скобки корректно открыты и закрыты.
Например в методе Start у условия if, например, не так написаны if (Monetization.isSupported) Monetization.Initialize("3969489",false); } -- нет открывающей фигурной скобки. Метод HandleShowResult почему-то находится внутри метода OnPointerClick. А ещё вот это
{
score = 0;
score = PlayerPrefs.GetInt("Score+",score);
}
Что это? У вас куча синтаксических ошибок, как будто не знаете где ставить скобки. Я могу примерно восстановить код. Но не факт, что он таким задумывался автором, кто бы это ни был.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Monetization;
using UnityEngine.EventSystems;
public class NewBehaviourScript : MonoBehaviour
{
public int score;
public Text clicktext;
void Start()
{
if (Monetization.isSupported)
{
Monetization.Initialize("3969489",false);
}
}
public void OnPointerClick(PointerEventData eventData)
{
if (Monetization.IsReady("Video"))
{
ShowAdCallbacks options = new ShowAdCallbacks();
options.finishCallback = HandleShowResult;
ShowAdPlacmentContent ad = Monetization.GetPlacementContent("Video") as ShowAdPlacmentContent;
ad.Show(options);
}
}
void HandleShowResult(ShowResult result)
{
if (result == ShowResult.finished)
{
doublecoin();
}
else if (result == ShowResult.Skipped)
{
// авр
}
else if (result == ShowResult.Failed)
{
// выап
}
score = 0;
score = PlayerPrefs.GetInt("Score+",score);
}
void Update()
{
clicktext.text = score.ToString();
}
#region Dima
public void ClickerScore()
{
score++;
PlayerPrefs.SetInt("Score+",score);
}
public void Reset()
{
PlayerPrefs.DeleteAll();
score = 0;
}
#endregion
}