- Home /
Error C # script FloatingText in Unity.
Salve a tutti!
Sto lavorando ad un progetto 2d platform. Ho due script in C# col nome FloatingText e PointStar. Sulla console mi da 2 errori.
1° errore al numero 12, sullo script FloatingText con scritto questo:
NullReferenceException: Object reference not set to an instance of an object FloatingText.Show (System.String text, System.String style, IFloatingTextPositioner positioner) (at Assets/x ninja/CSharp Script/FloatingText.cs:12) PointStar.OnTriggerEnter2D (UnityEngine.Collider2D other) (at Assets/x ninja/CSharp Script/PointStar.cs:29)
using UnityEngine;
using System.Collections;
public class FloatingText : MonoBehaviour
{
private static readonly GUISkin Skin = Resources.Load<GUISkin>("GameSkin");
public static FloatingText Show(string text, string style, IFloatingTextPositioner positioner)
{
var go = new GameObject("Floating Text");
var floatingText = go.AddComponent<FloatingText>();
floatingText.Style = Skin.GetStyle(style);
floatingText._positioner = positioner;
floatingText._content = new GUIContent(text);
return floatingText;
}
private GUIContent _content;
private IFloatingTextPositioner _positioner;
public string Text { get { return _content.text; } set { _content.text = value; }}
public GUIStyle Style { get; set; }
public void OnGUI ()
{
var position = new Vector2();
var contentSize = Style.CalcSize(_content);
if (!_positioner.GetPosition(ref position, _content, contentSize))
{
Destroy(gameObject);
return;
}
GUI.Label(new Rect(position.x, position.y, contentSize.x, contentSize.y), _content, Style);
}
}
I put the script where IFloatingTextPositioner assigns an error.
using UnityEngine;
using System.Collections;
public interface IFloatingTextPositioner
{
bool GetPosition(ref Vector2 position, GUIContent content, Vector2 size);
}
I post also the script PointStar at number 29 gives an error.
using UnityEngine;
using System.Collections;
public class PointStar : MonoBehaviour, IPlayerRespawnListener
{
public GameObject Effect;
public int PointsToAdd = 10;
public AudioClip HitStarSound;
public Animator Animator;
public SpriteRenderer Renderer;
private bool _isCollected;
public void OnTriggerEnter2D(Collider2D other)
{
if (_isCollected)
return;
if (other.GetComponent<Player>() == null)
return;
if (HitStarSound != null)
AudioSource.PlayClipAtPoint(HitStarSound, transform.position);
GameManager.Instance.AddPoints(PointsToAdd);
Instantiate(Effect, transform.position, transform.rotation);
FloatingText.Show(string.Format("+{0}!", PointsToAdd), "PointStarText", new FromWorldPointTextPositioner(Camera.main, transform.position, 1.5f, 50));
_isCollected = true;
Animator.SetTrigger("Collect");
}
public void FinishAnimationEvent()
{
Renderer.enabled = false;
Animator.SetTrigger("Reset");
}
public void OnPlayerRespawnInThisCheckpoint(Checkpoint checkpoint, Player player)
{
_isCollected = false;
Renderer.enabled = true;
}
}
2nd error at number 27, again on the script FloatingText, saying this:
NullReferenceException: Object reference not set to an instance of an object FloatingText.OnGUI () (at Assets / x ninja / CSharp Script / FloatingText.cs: 27)
Thank You.
Answer by JigneshKoradiya · Mar 29, 2015 at 07:17 PM
public static FloatingText_Show(string text, string style, IFloatingTextPositioner positioner)
replace this line first
Your answer
Follow this Question
Related Questions
Trying to find what player inputed in Text Input field 1 Answer
Error CS1061 I can't find a solution! [C#] 1 Answer
Distribute terrain in zones 3 Answers
How do I solve this error? 2 Answers
enemy detect player then attack - c# 1 Answer