Disable a script when its not hit by raycast. still uses 17 to 20% in profiler
hello
I am trying to optimize my scripts with mild success. I have disable 2 ui text objects that are included in a object that can be picked up which contains a "facetexttocamera" script that i wrote to face text to the camera of a pickup-able object. Just to give the indication that it can be picked up when a raycast hits the object.
When i look in the profiler it can take up to 15 to 20% at times and frames will not go over 30. Why is the script taking up so much if the objects that holds the script is disabled before before there is a confirmed raycast hit? If i can get this to work i should be around 50 to 60 fps which is acceptable for me.
The 2 text ui objects are set to false when a raycast does not hit the object.
the script is fairly big but a example of the disablement can be found on line 39. also when i look in the hierarchy the text objects are not shaded out so my guess is the .enable and .disable lines are not working but i get no errors.
Below is a the script to check the raycast for you to see how i am disabling the text objects.
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class RayCastChop : MonoBehaviour {
int rayLength = 4;
private TreeCont treeScript;
private StoneCont stoneScript;
private BushCont bushScript;
public ObjectTextDisplay ObjScript;
public FaceTextToCamera ObjTextScript;
public string objname;
private PlayerControls playerAnim;
public Vector3 fwd;
public bool ItemResult;
public GameObject ObjToPickup;
public ObjectTextDisplay LastPickupItem;
public Text objText;
public Text objText2;
void Update (){
RaycastHit hit = new RaycastHit();
fwd = transform.TransformDirection(Vector3. forward);
if (Physics.Raycast (transform.position, fwd, out hit, rayLength)) {
objname = hit.collider.gameObject.name;
if (hit.collider.gameObject.tag == "Tree") {
ObjScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<ObjectTextDisplay> ();
treeScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<TreeCont> ();
if (ObjScript.transform.GetChild (0).gameObject.name == "Canvas") {
objText = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (1).gameObject.name).GetComponent<Text> ();
} else {
objText = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (1).gameObject.name).GetComponent<Text> ();
}
objText.enabled = true;
objText2.enabled = true;
treeScript.enabled = true;
ObjScript.enabled = true;
ObjScript.displayInfo = true;
//StartCoroutine(ObjCoroutine());
if (Input.GetMouseButtonDown (0)) {
treeScript.treeHealth -= 1;
}
} else {
if (hit.collider.gameObject.tag == "Tree") {
ObjScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<ObjectTextDisplay> ();
treeScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<TreeCont> ();
if (ObjScript.transform.GetChild (0).gameObject.name == "Canvas") {
objText = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (1).gameObject.name).GetComponent<Text> ();
} else {
objText = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (1).gameObject.name).GetComponent<Text> ();
}
objText.enabled = false;
objText2.enabled = false;
ObjScript.displayInfo = false;
ObjScript.enabled = false;
treeScript.enabled = false;
}
}
if (hit.collider.gameObject.tag == "Stone") {
stoneScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<StoneCont> ();
ObjScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<ObjectTextDisplay> ();
if (ObjScript.transform.GetChild (0).gameObject.name == "Canvas") {
objText = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (1).gameObject.name).GetComponent<Text> ();
} else {
objText = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (1).gameObject.name).GetComponent<Text> ();
}
objText.enabled = true;
objText2.enabled = true;
stoneScript.enabled = true;
ObjScript.enabled = true;
if (Input.GetMouseButtonDown (0)) {
stoneScript.stoneHealth -= 1;
}
} else {
if (hit.collider.gameObject.tag == "Stone") {
stoneScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<StoneCont> ();
ObjScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<ObjectTextDisplay> ();
if (ObjScript.transform.GetChild (0).gameObject.name == "Canvas") {
objText = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (1).gameObject.name).GetComponent<Text> ();
} else {
objText = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (1).gameObject.name).GetComponent<Text> ();
}
objText.enabled = false;
objText2.enabled = false;
ObjScript.displayInfo = false;
ObjScript.enabled = false;
stoneScript.enabled = false;
}
}
if (hit.collider.gameObject.tag == "Bush") {
bushScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<BushCont> ();
ObjScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<ObjectTextDisplay> ();
if (ObjScript.transform.GetChild (0).gameObject.name == "Canvas") {
objText = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (1).gameObject.name).GetComponent<Text> ();
} else {
objText = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (1).gameObject.name).GetComponent<Text> ();
}
objText.enabled = true;
objText2.enabled = true;
ObjScript.enabled = true;
bushScript.enabled = true;
if (Input.GetMouseButtonDown (0)) {
bushScript.bushHealth -= 1;
}
} else {
if (hit.collider.gameObject.tag == "Bush") {
bushScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<BushCont> ();
ObjScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<ObjectTextDisplay> ();
if (ObjScript.transform.GetChild (0).gameObject.name == "Canvas") {
objText = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (1).gameObject.name).GetComponent<Text> ();
} else {
objText = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (1).gameObject.name).GetComponent<Text> ();
}
objText.enabled = false;
objText2.enabled = false;
ObjScript.displayInfo = false;
ObjScript.enabled = false;
bushScript.enabled = false;
}
}
if (hit.collider.gameObject.CompareTag ("Pickup")) {
ObjScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<ObjectTextDisplay> ();
LastPickupItem = GameObject.Find (hit.collider.gameObject.name).GetComponent<ObjectTextDisplay> ();
if (ObjScript.transform.GetChild (0).gameObject.name == "Canvas") {
objText = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (1).gameObject.name).GetComponent<Text> ();
} else {
objText = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (1).gameObject.name).GetComponent<Text> ();
}
objText.enabled = true;
objText2.enabled = true;
ObjScript.enabled = true;
ObjScript.displayInfo = true;
ObjToPickup = hit.collider.gameObject;
ItemResult = hit.collider.gameObject.CompareTag ("Pickup");
} else {
//ObjScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<ObjectTextDisplay> ();
if (ItemResult) {
ObjScript = GameObject.Find (hit.collider.gameObject.name).GetComponent<ObjectTextDisplay> ();
if (ObjScript.transform.GetChild (0).gameObject.name == "Canvas") {
objText = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (0).GetChild (1).gameObject.name).GetComponent<Text> ();
} else {
objText = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (0).gameObject.name).GetComponent<Text> ();
objText2 = GameObject.Find (ObjScript.transform.GetChild (1).GetChild (1).gameObject.name).GetComponent<Text> ();
}
objText.enabled = false;
objText2.enabled = false;
LastPickupItem.displayInfo = false;
ObjToPickup = null;
ItemResult = false;
ObjScript.enabled = false;
}
}
}
}
}
Your answer
Follow this Question
Related Questions
A more optimized way to adjust duplicate integer values In a list? 0 Answers
i need help with raycast 2 Answers
Shoot towards mouse except mouse y 1 Answer
Scripting Problems with var arrays 1 Answer
RayCast issues 0 Answers