- Home /
OnMouseDown is checked when build for Android
I have an question.
For example I have two function, One that is getting the OnMouseDown event when Im in the editor and other one when Im getting touch inputs when Im getting the app to android.
#if UNITY_EDITOR
void OnMouseDown()
{
//if the state is in Motion then we can't click on other matches
if (GameObject.Find ("Board").GetComponent<Board> ().DetermineBoardState())
return ;
//This will ensure us that if the objects are swapping than we can't swap other objects.
if(!GameObject.Find ("Board").GetComponent<Board>().isSwapping)
{
GameObject.Find ("Board").GetComponent<Board> ().SwapGems (this);
//This will not allow us to click on any other objects while is swapping
ToggleSelector ();
}
}
#endif
#if UNITY_ANDROID
void Upate()
{
TouchDown();
}
// OnTouchDown.cs
// Allows "OnMouseDown()" events to work on the iPhone.
// Attach to the main camera.
void TouchDown()
{
RaycastHit hit = new RaycastHit ();
for(int i = 0; i < Input.touchCount; ++i)
{
if(Input.GetTouch(i).phase.Equals(TouchPhase.Began))
{
//Construct a ray from the current touch coordinates
Ray ray = Camera.main.ScreenPointToRay(Input.GetTouch(i).position);
if(Physics.Raycast(ray,out hit))
{
//if the state is in Motion then we can't click on other matches
if (GameObject.Find ("Board").GetComponent<Board> ().DetermineBoardState())
return ;
//This will ensure us that if the objects are swapping than we can't swap other objects.
if(!GameObject.Find ("Board").GetComponent<Board>().isSwapping)
{
GameObject.Find ("Board").GetComponent<Board> ().SwapGems (this);
//This will not allow us to click on any other objects while is swapping
ToggleSelector ();
}
}
}
}
}
#endif
As you can see I placed the macros that I want my function to be called for.
So, as I understood, When I will be in the Editor, my script will work with OnMouseDown.
But when I will be on Android, I will work with Update and TouchDown. Right ?
Reference from this link http://docs.unity3d.com/Manual/PlatformDependentCompilation.html
Than if that is true, why when Im building the Level for Android I'm getting this warning.?
Game scripts or other custom code contains OnMouse_ event handlers. Presence of such handlers might impact performance on handheld devices. UnityEditor.HostView:OnGUI()
Answer by uanmanarmy · Jul 22, 2014 at 09:13 AM
[Closed].
It was a bug of mine. Actually the OnMouseDown is working with phones. Only that you cannot take more than one touch at the same time.
Answer by niall1111 · Jul 18, 2014 at 01:30 PM
Do you have an OnMouseDown function anywhere else in a script in your assets folder? do a search using Mono or something, with ctrl+shift+f. Regardless, I've always found that warning message could be safely ignored anyway. Also of note, I've been perfectly fine using OnMouseDown handlers for iOS without any noticeable drop in performance. I get the same warning on my builds.
yes As you can see I have the On$$anonymous$$ouseDown function in my script, but it's under UNITY_EDITOR macro (
Your answer
Follow this Question
Related Questions
Convert Touch input to Mouse input C#? 1 Answer
Get GameObject That Was Last Clicked? 2 Answers
Projection to mouse position in isometric game 1 Answer
GetMouseButtonDown(1) true in multiple frames 1 Answer
Gravity Switch Touch 1 Answer