- Home /
Question by
Roycehtm · Dec 20, 2016 at 03:17 PM ·
programmingproblem during runtimethreads
i need help in threading programation in unity 3d
im making a game with threads but my problem is that i can't realise it; this is my script
using System.Threading; using UnityEngine; using System.Collections; using UnityEngine.UI; using UnityEngine.EventSystems; using System.Collections.Generic;
public class TwoOnOne : MonoBehaviour {
private Thread Pol ;
private Thread Net ;
private bool isrunningP ;
private bool isrunningN ;
private bool rntPause;
private bool rplPause ;
private bool rntCPause;
private bool rplCPause ;
public Animator AnimP;
public Animator AnimN;
public Transform RP;
public Transform RN;
public float fuellP;
public float fuellN;
public float MaxSpeed;
private float Max_Y_Up;
private float Max_Y_Down;
private float Max_X_Left;
private float Max_X_Right;
private Vector3 VRN;
private Vector3 VRP;
void Start()
{
VRN = RN.localPosition;
VRP = RP.localPosition;
Max_Y_Up = 2.8f;
Max_Y_Down = -17.0f;
Max_X_Left = -37.0f;
Max_X_Right = 32.0f;
isrunningP = false;
isrunningN = false;
rntPause = false;
rplPause = false;
rntCPause = false;
rplCPause = false;
Pol = new Thread(MoveRight);
Net = new Thread(MoveDown);
}
void Update()
{
RN.localPosition = VRN;
RP.localPosition = VRP;
}
void OnGUI()
{
if(GUI.Button(new Rect(50, 50, 100, 50), "Pol"))
{
if(!Pol.IsAlive)
{
isrunningP = true;
Pol.Start();
}
else
{
Pol.Abort();
isrunningP = false;
rplPause = !rplPause;
}
}
if(GUI.Button(new Rect(50, 120, 100, 50), "Net"))
{
rntCPause = true;
if(!Net.IsAlive)
{
isrunningN = true;
Net.Start();
}
else
{
isrunningN = false;
rntPause = !rntPause;
}
}
}
public void MoveRight()
{
while(isrunningP){
Vector3 thePos = VRP;
thePos.x += MaxSpeed;
fuellP -= 2;
if(thePos.x > Max_X_Right)
thePos.x = Max_X_Right;
else
VRP = thePos;
AnimP.SetBool("Right",true);
while(rplPause){}
}
}
public void MoveDown(){
while(isrunningN){
Vector3 thePos = VRN;
thePos.y -= MaxSpeed;
fuellN -= 2;
if(thePos.y < Max_Y_Down)
thePos.y = Max_Y_Down;
else
VRN = thePos;
AnimN.SetBool("Down",true);
while(rntPause){}
}
}
void OnApplicationQuit()
{
isrunningP = false;
isrunningN = false;
Pol.Abort();
Net.Abort();
}
void OnDestroy()
{
isrunningP = false;
isrunningN = false;
Pol.Abort();
Net.Abort();
}
}
i wanna make a game that if i press a button i will Start the first Thread and if press the second button i will stop the current thread (will wait ) and i will start the second thread. plus if repressed the first button i will notify the first thread and it's also the same for the seconde button please i need help thank you
Comment