MessageDisplayer

From Unify Community Wiki
(Difference between revisions)
Jump to: navigation, search
m (Rationalised categories)
Line 10: Line 10:
 
Use this script on a guiText object to have status messages.
 
Use this script on a guiText object to have status messages.
  
==C# - MessageDisplayer.cs==
+
==JavaScript - FramesPerSecond.js==
<csharp>
+
<javascript>
using UnityEngine;
+
// Attach this to a GUIText to make a frames/second indicator.
using System.Collections;
+
//
 +
// It calculates frames/second over each updateInterval,
 +
// so the display does not keep changing wildly.
 +
//
 +
// It is also fairly accurate at very low FPS counts (<10).
 +
// We do this not by simply counting frames per interval, but
 +
// by accumulating FPS for each frame. This way we end up with
 +
// correct overall FPS even if the interval renders something like
 +
// 5.5 frames.
  
// Use this script on a guiText object to have status messages
+
var updateInterval = 0.5;
// Just call messageDisplayerObject.DisplayMessage("hello") and you'll
+
// get a line of self disappearing messages.
+
  
public class MessageDisplayer : MonoBehaviour
+
private var accum = 0.0; // FPS accumulated over the interval
 +
private var frames = 0; // Frames drawn over the interval
 +
private var timeleft : float; // Left time for current interval
 +
 
 +
function Start()
 +
{
 +
if( !guiText )
 +
{
 +
print ("FramesPerSecond needs a GUIText component!");
 +
enabled = false;
 +
return;
 +
}
 +
timeleft = updateInterval;
 +
}
 +
 
 +
function Update()
 
{
 
{
    ArrayList messages = new ArrayList();
+
timeleft -= Time.deltaTime;
   
+
accum += 1.0/Time.deltaTime;
    public void DisplayMessage(string message)
+
++frames;
    {
+
        messages.Add(message);
+
// Interval ended - update GUI text and start new interval
        UpdateDisplay();
+
if( timeleft <= 0.0 )
        Invoke("DeleteOldestMessage", 5F);
+
{
    }
+
guiText.text = "" + (accum/frames).ToString("f2");
   
+
timeleft = updateInterval;
    void DeleteOldestMessage()
+
accum = 0.0;
    {
+
frames = 0;
        // The following "if statement" protects from this function
+
}
        // getting called by SendMessage from another script and
+
        // crashing.
+
        if (messages.Count > 0)
+
        {
+
            messages.RemoveAt(0);
+
            UpdateDisplay();
+
        }
+
    }
+
   
+
    void UpdateDisplay()
+
    {
+
        string formattedMessages = "";
+
       
+
        foreach (string message in messages)
+
        {
+
            formattedMessages += message + "\n";
+
        }
+
       
+
        guiText.text = formattedMessages;
+
    }
+
 
}
 
}
</csharp>
+
</javascript>

Revision as of 15:07, 10 July 2006

Author: Jonathan Czeck (aarku)

Description

Use this script on a guiText object to have status messages. Just call messageDisplayerObject.DisplayMessage("hello") and you'll get a line of self disappearing messages. TODO: Make this script more of a singleton.

Usage

Use this script on a guiText object to have status messages.

JavaScript - FramesPerSecond.js

<javascript> // Attach this to a GUIText to make a frames/second indicator. // // It calculates frames/second over each updateInterval, // so the display does not keep changing wildly. // // It is also fairly accurate at very low FPS counts (<10). // We do this not by simply counting frames per interval, but // by accumulating FPS for each frame. This way we end up with // correct overall FPS even if the interval renders something like // 5.5 frames.

var updateInterval = 0.5;

private var accum = 0.0; // FPS accumulated over the interval private var frames = 0; // Frames drawn over the interval private var timeleft : float; // Left time for current interval

function Start() { if( !guiText ) { print ("FramesPerSecond needs a GUIText component!"); enabled = false; return; } timeleft = updateInterval; }

function Update() { timeleft -= Time.deltaTime; accum += 1.0/Time.deltaTime; ++frames;

// Interval ended - update GUI text and start new interval if( timeleft <= 0.0 ) { guiText.text = "" + (accum/frames).ToString("f2"); timeleft = updateInterval; accum = 0.0; frames = 0; } } </javascript>

Personal tools
Namespaces

Variants
Actions
Navigation
Extras
Toolbox