📖 Scenario: You are creating a simple Unity app that reacts when the user touches the screen. This is common in mobile games and apps where touch controls are used.
🎯 Goal: Build a Unity script that detects when the user touches the screen and prints the touch position to the console.
📋 What You'll Learn
Create a list to store current touches
Create a variable to count the number of touches
Use a loop to check each touch's position
Print the touch positions to the console
💡 Why This Matters
🌍 Real World
Touch input is essential for mobile apps and games to respond to user finger taps and gestures.
💼 Career
Understanding touch input is key for mobile game developers and app creators working with Unity.
Progress0 / 4 steps
1
Create a list to hold current touches
Create a variable called touches and set it to Input.touches to get the current touches on the screen.
Unity
Hint
Use Input.touches to get all current touches as an array.
2
Create a variable to count the number of touches
Create an integer variable called touchCount and set it to Input.touchCount to get how many touches are currently on the screen.
Unity
Hint
Input.touchCount gives the number of touches currently detected.
3
Loop through each touch and get its position
Use a for loop with variable i from 0 to touchCount (exclusive) to access each touch in touches. Inside the loop, create a variable touchPos and set it to touches[i].position.
Unity
Hint
Use a for loop to go through each touch and get its position.
4
Print each touch position to the console
Inside the for loop, add a line to print the text "Touch position: " followed by the touchPos variable using Debug.Log.
Unity
Hint
Use Debug.Log("Touch position: " + touchPos); to print the position.
Practice
(1/5)
1. Which Unity property tells you how many fingers are currently touching the screen?
easy
A. Input.touchPhase
B. Input.touchCount
C. Input.GetTouchCount()
D. Input.touchPosition
Solution
Step 1: Understand the purpose of Input.touchCount
This property returns the number of fingers currently touching the screen in Unity.
Step 2: Compare with other options
Input.touchPhase is not a property but an enum for touch state; Input.GetTouchCount() does not exist; Input.touchPosition gives position, not count.
Final Answer:
Input.touchCount -> Option B
Quick Check:
Number of touches = Input.touchCount [OK]
Hint: Remember: touchCount counts fingers on screen [OK]
Common Mistakes:
Confusing touchCount with touchPhase
Using non-existent methods like GetTouchCount()
Mixing position with count
2. Which of the following is the correct way to get the first touch input in Unity?
easy
A. Input.touch(0)
B. Input.GetTouchCount(0)
C. Input.GetTouch(0)
D. Input.touchCount(0)
Solution
Step 1: Recall the method to access touches
Unity uses Input.GetTouch(index) to get a touch at a specific index.
Step 2: Check syntax correctness
Input.touch(0) and Input.touchCount(0) are invalid; GetTouchCount(0) does not exist.
Final Answer:
Input.GetTouch(0) -> Option C
Quick Check:
First touch = Input.GetTouch(0) [OK]
Hint: Use GetTouch(index) to access specific touch [OK]
Common Mistakes:
Using touch as a method instead of GetTouch
Trying to call touchCount as a method
Confusing method names
3. What will be the output of this code snippet if the user just started touching the screen?
if (Input.touchCount > 0) {
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Began) {
Debug.Log("Touch started");
}
}
medium
A. Touch ended
B. Touch moved
C. No output
D. Touch started
Solution
Step 1: Understand the touch.phase check
The code checks if the first touch's phase is TouchPhase.Began, which means the touch just started.
Step 2: Match the condition with output
If the user just started touching, the condition is true and "Touch started" is logged.
Final Answer:
Touch started -> Option D
Quick Check:
touch.phase == Began means "Touch started" [OK]
Hint: TouchPhase.Began means finger just touched screen [OK]
Common Mistakes:
Confusing Began with Moved or Ended
Ignoring touchCount check
Assuming output without touch
4. Identify the error in this Unity C# code snippet for detecting a touch:
if (Input.touchCount > 0) {
Touch touch = Input.GetTouch(0);
if (touch.phase = TouchPhase.Began) {
Debug.Log("Touch started");
}
}
medium
A. Using assignment (=) instead of comparison (==) in if condition
B. Incorrect method name GetTouch instead of GetTouches
C. Missing check for touchCount == 1
D. TouchPhase.Began is not a valid enum
Solution
Step 1: Check the if condition syntax
The condition uses a single equals sign (=), which assigns instead of compares.
Step 2: Understand correct comparison operator
To compare values, double equals (==) must be used in C#.
Final Answer:
Using assignment (=) instead of comparison (==) in if condition -> Option A
Quick Check:
Use == to compare, not = [OK]
Hint: Use == for comparison, = is assignment [OK]
Common Mistakes:
Using = instead of == in conditions
Thinking GetTouch is wrong method
Unnecessary touchCount == 1 check
Misunderstanding TouchPhase enum
5. You want to detect when the user moves their finger on the screen and print the new position. Which code snippet correctly does this inside Update()?
hard
A.
if (Input.touchCount > 0) {
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Moved) {
Debug.Log($"Moved to: {touch.position}");
}
}
B.
if (Input.touchCount > 0) {
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Ended) {
Debug.Log($"Moved to: {touch.position}");
}
}
C.
if (Input.touchCount == 0) {
Touch touch = Input.GetTouch(0);
Debug.Log($"Moved to: {touch.position}");
}
D.
Touch touch = Input.GetTouch(0);
if (touch.phase == TouchPhase.Moved) {
Debug.Log($"Moved to: {touch.position}");
}
Solution
Step 1: Check for active touches
We must ensure Input.touchCount > 0 before accessing touches to avoid errors.
Step 2: Detect the move phase and print position
Using touch.phase == TouchPhase.Moved correctly detects finger movement and prints the position.
Final Answer:
Code snippet D correctly detects movement and prints position -> Option A
Quick Check:
Check touchCount > 0 and phase == Moved [OK]
Hint: Always check touchCount > 0 before GetTouch [OK]
Common Mistakes:
Checking phase == Ended instead of Moved
Accessing GetTouch(0) when touchCount == 0
Not checking touchCount before GetTouch
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.