Is it ok to do all code in Start and update ?
Hello, I know this might be a silly question but which one is better doing a code like this :
public class NewBehaviourScript : MonoBehaviour {
public float speed;
private Rigidbody rb;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
if(Input("Horizontal")>0){
rb.AddForce(transform.forward * speed, ForceMode.VelocityChange);
}
}
}
Or like this:
public class NewBehaviourScript : MonoBehaviour {
public float speed;
private Rigidbody rb;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
if(Input("Horizontal")>0){
Move();
}
}
void Move(){
rb.AddForce(transform.forward * speed, ForceMode.VelocityChange);
}
}
any why do we need to use the best one ? thank you in advance.
Answer by jdean300 · Jun 26, 2016 at 08:58 AM
It is OK to do all your code in Start and Update. However, you're going to start running into problems as the code gets longer and longer because it will become hard for you to reason about how the programs execution flows through the method. Some people break apart every method until it is only 5 lines of code or so, some people will mix it up and have some long methods and some short ones. There's really no right answer.
I suggest you ask yourself "If I came back to this code a month from now, would it be easy to understand?" If the answer is yes, then keep doing what you're doing. However, if you can't answer yes confidently, then breaking the code up will always always make things easier to grasp.
The only time I would look at somebodies code and immediately start suggesting they break things up is if a class was >500 lines or if a method was >75 lines. It doesn't always make sense to do so, but most of the time if things have become that large it is time to rethink the design.
Answer by thz343 · Jun 26, 2016 at 08:56 AM
I would recommend doing it the first way, otherwise you'll be making your program less efficient by writing a subroutine for an action that only requires one line of code. In the second way you are writing 4 lines of code when you only need to write 1.
If the "move" action becomes more complex, and starts to involve more code(and is called from many places in the code), then use the subroutine method, as it will be much more convienient to do so and will be more efficient. You can then run multiple lines of code by only calling a single command, ie "Move".
Answer by pronobroy · Jun 26, 2016 at 09:07 AM
I can't see any changes on those two type of code. You should know how those function works. Awake() function start before start () call for initialize value you can pick any on them depend on you but for physics movement FixedUpdate() is better then Update().FixedUpdate() take same time per frame I thike it's 0.02 may be but Update() dose't.You also should use debugger to see how your code behave its give you better control of your code.