- Home /
Touch performance: Multiple raycast-scripts or better only one
I´m new to scripting and I have a complex 3d-GUI with a lot of single 3d-objects that can be touched. For each of them I have a more or less different script, depending of what action will be triggered. But all of these scripts check touch-input by:
for (var touch : Touch in Input.touches) { if (touch.phase == TouchPhase.Began) { var hit : RaycastHit; var ray = guicam.camera.ScreenPointToRay (Input.GetTouch(0).position);
if (Physics.Raycast (ray, hit,10000, mask)) {
if (hit.transform==transform) dothis(); ....
Is this bad for performance? Would it be faster to have only one script with one ray against an array of 3d-GUI-Objects?
Answer by hathol · Jun 04, 2012 at 09:29 AM
I would only use one raycast. Use an Interface (or whatever the JS equivalent of that is) with some sort of abstract "OnPressed" function that gets implemented by all of your GUI objects. Since you're already using a layer mask, I presume all of your objects are on the same layer. That way you can have a single raycast and then just use transform.getComponent(yourInterface).OnPressed() on the hit object to execute the actual action.
Cascho01 : Thanks! Would like to know if this what be good for performance on mobile devices, too.
Berenger : Please Cascho01, use the comments when you want to comment.
Your answer
Follow this Question
Related Questions
Button Focus Prevents Touch Raycast (Android C#) 1 Answer
Making raycasts go to the centre of the screen 1 Answer
Windows 7 touch not working correctly in WebGL! 1 Answer
Vertical distance indication 1 Answer
touch 3d object open gui 1 Answer