- 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

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