mirror of
				https://github.com/DerTyp7/fps-citybuild-unity.git
				synced 2025-10-31 13:17:07 +01:00 
			
		
		
		
	Interactable Class
This commit is contained in:
		| @@ -0,0 +1,134 @@ | ||||
| using UnityEngine; | ||||
| using System.Collections; | ||||
|  | ||||
|  | ||||
| namespace TMPro.Examples | ||||
| { | ||||
|      | ||||
|     public class TMP_FrameRateCounter : MonoBehaviour | ||||
|     { | ||||
|         public float UpdateInterval = 5.0f; | ||||
|         private float m_LastInterval = 0; | ||||
|         private int m_Frames = 0; | ||||
|  | ||||
|         public enum FpsCounterAnchorPositions { TopLeft, BottomLeft, TopRight, BottomRight }; | ||||
|  | ||||
|         public FpsCounterAnchorPositions AnchorPosition = FpsCounterAnchorPositions.TopRight; | ||||
|  | ||||
|         private string htmlColorTag; | ||||
|         private const string fpsLabel = "{0:2}</color> <#8080ff>FPS \n<#FF8000>{1:2} <#8080ff>MS"; | ||||
|  | ||||
|         private TextMeshPro m_TextMeshPro; | ||||
|         private Transform m_frameCounter_transform; | ||||
|         private Camera m_camera; | ||||
|  | ||||
|         private FpsCounterAnchorPositions last_AnchorPosition; | ||||
|  | ||||
|         void Awake() | ||||
|         { | ||||
|             if (!enabled) | ||||
|                 return; | ||||
|  | ||||
|             m_camera = Camera.main; | ||||
|             Application.targetFrameRate = 9999; | ||||
|  | ||||
|             GameObject frameCounter = new GameObject("Frame Counter"); | ||||
|  | ||||
|             m_TextMeshPro = frameCounter.AddComponent<TextMeshPro>(); | ||||
|             m_TextMeshPro.font = Resources.Load<TMP_FontAsset>("Fonts & Materials/LiberationSans SDF"); | ||||
|             m_TextMeshPro.fontSharedMaterial = Resources.Load<Material>("Fonts & Materials/LiberationSans SDF - Overlay"); | ||||
|  | ||||
|  | ||||
|             m_frameCounter_transform = frameCounter.transform; | ||||
|             m_frameCounter_transform.SetParent(m_camera.transform); | ||||
|             m_frameCounter_transform.localRotation = Quaternion.identity; | ||||
|  | ||||
|             m_TextMeshPro.enableWordWrapping = false; | ||||
|             m_TextMeshPro.fontSize = 24; | ||||
|             //m_TextMeshPro.FontColor = new Color32(255, 255, 255, 128); | ||||
|             //m_TextMeshPro.edgeWidth = .15f; | ||||
|             //m_TextMeshPro.isOverlay = true; | ||||
|  | ||||
|             //m_TextMeshPro.FaceColor = new Color32(255, 128, 0, 0); | ||||
|             //m_TextMeshPro.EdgeColor = new Color32(0, 255, 0, 255); | ||||
|             //m_TextMeshPro.FontMaterial.renderQueue = 4000; | ||||
|  | ||||
|             //m_TextMeshPro.CreateSoftShadowClone(new Vector2(1f, -1f)); | ||||
|  | ||||
|             Set_FrameCounter_Position(AnchorPosition); | ||||
|             last_AnchorPosition = AnchorPosition; | ||||
|  | ||||
|  | ||||
|         } | ||||
|  | ||||
|         void Start() | ||||
|         { | ||||
|             m_LastInterval = Time.realtimeSinceStartup; | ||||
|             m_Frames = 0; | ||||
|         } | ||||
|  | ||||
|         void Update() | ||||
|         { | ||||
|             if (AnchorPosition != last_AnchorPosition) | ||||
|                 Set_FrameCounter_Position(AnchorPosition); | ||||
|  | ||||
|             last_AnchorPosition = AnchorPosition; | ||||
|  | ||||
|             m_Frames += 1; | ||||
|             float timeNow = Time.realtimeSinceStartup; | ||||
|  | ||||
|             if (timeNow > m_LastInterval + UpdateInterval) | ||||
|             { | ||||
|                 // display two fractional digits (f2 format) | ||||
|                 float fps = m_Frames / (timeNow - m_LastInterval); | ||||
|                 float ms = 1000.0f / Mathf.Max(fps, 0.00001f); | ||||
|  | ||||
|                 if (fps < 30) | ||||
|                     htmlColorTag = "<color=yellow>"; | ||||
|                 else if (fps < 10) | ||||
|                     htmlColorTag = "<color=red>"; | ||||
|                 else | ||||
|                     htmlColorTag = "<color=green>"; | ||||
|  | ||||
|                 //string format = System.String.Format(htmlColorTag + "{0:F2} </color>FPS \n{1:F2} <#8080ff>MS",fps, ms); | ||||
|                 //m_TextMeshPro.text = format; | ||||
|  | ||||
|                 m_TextMeshPro.SetText(htmlColorTag + fpsLabel, fps, ms); | ||||
|  | ||||
|                 m_Frames = 0; | ||||
|                 m_LastInterval = timeNow; | ||||
|             } | ||||
|         } | ||||
|  | ||||
|  | ||||
|         void Set_FrameCounter_Position(FpsCounterAnchorPositions anchor_position) | ||||
|         { | ||||
|             //Debug.Log("Changing frame counter anchor position."); | ||||
|             m_TextMeshPro.margin = new Vector4(1f, 1f, 1f, 1f); | ||||
|  | ||||
|             switch (anchor_position) | ||||
|             { | ||||
|                 case FpsCounterAnchorPositions.TopLeft: | ||||
|                     m_TextMeshPro.alignment = TextAlignmentOptions.TopLeft; | ||||
|                     m_TextMeshPro.rectTransform.pivot = new Vector2(0, 1); | ||||
|                     m_frameCounter_transform.position = m_camera.ViewportToWorldPoint(new Vector3(0, 1, 100.0f)); | ||||
|                     break; | ||||
|                 case FpsCounterAnchorPositions.BottomLeft: | ||||
|                     m_TextMeshPro.alignment = TextAlignmentOptions.BottomLeft; | ||||
|                     m_TextMeshPro.rectTransform.pivot = new Vector2(0, 0); | ||||
|                     m_frameCounter_transform.position = m_camera.ViewportToWorldPoint(new Vector3(0, 0, 100.0f)); | ||||
|                     break; | ||||
|                 case FpsCounterAnchorPositions.TopRight: | ||||
|                     m_TextMeshPro.alignment = TextAlignmentOptions.TopRight; | ||||
|                     m_TextMeshPro.rectTransform.pivot = new Vector2(1, 1); | ||||
|                     m_frameCounter_transform.position = m_camera.ViewportToWorldPoint(new Vector3(1, 1, 100.0f)); | ||||
|                     break; | ||||
|                 case FpsCounterAnchorPositions.BottomRight: | ||||
|                     m_TextMeshPro.alignment = TextAlignmentOptions.BottomRight; | ||||
|                     m_TextMeshPro.rectTransform.pivot = new Vector2(1, 0); | ||||
|                     m_frameCounter_transform.position = m_camera.ViewportToWorldPoint(new Vector3(1, 0, 100.0f)); | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 DerTyp187
					DerTyp187