- Home /
iPhone button efficient ?
Is this an inefficient way to make a pause button for the iPhone:
var pauseButton: GameObject;
var hit : RaycastHit;
var pauseGame : boolean = false;
function Update () {
for (var touch : iPhoneTouch in iPhoneInput.touches) { var ray = Camera.main.ScreenPointToRay(touch.position); var hit : RaycastHit;
if (touch.phase == iPhoneTouchPhase.Began)
{
if (Physics.Raycast(ray,hit))
{
if (hit.collider.gameObject != null)
{
if(hit.collider.gameObject == pauseButton)
{
if(pauseGame == false)
{
// call pause game function
pauseGame = true;
}
else
{
//un pause game
pauseGame = false;
}
}
}
}
}
}
}
I'm a little worried as its in update() and is constantly checking?
Thanks
Answer by Eric5h5 · Nov 01, 2010 at 09:38 PM
Instead of raycasting, check that a rect contains the touch position.
for (var touch : iPhoneTouch in iPhoneInput.touches)
{
if (touch.phase == iPhoneTouchPhase.Began && pauseButtonRect.Contains(touch.position))
{
Unless the pause button is actually an object that moves around, there's no reason to use raycasting and colliders.
Thanks, that makes the code a lot shorter :) , so would it still be ok to use this for an iPhone app as its constantly checking in the update function in there has been a press?
You have to check touches every frame since they can occur at any time, and there are no OnTouchBegan callbacks or anything.
Your answer
![](https://koobas.hobune.stream/wayback/20220613081608im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Flipping textures 0 Answers
Unity iPhone and Unity Desktop Scripting Differences 2 Answers
How to 'flick' objects in a 2d game 1 Answer
ExecutionEngineException: Unity 3 on the iPhone 2 Answers
Iphone Unity and Best book . 1 Answer