Book Image

Learning C# by Developing Games with Unity 3D Beginner's Guide

By : Terry Norton
Book Image

Learning C# by Developing Games with Unity 3D Beginner's Guide

By: Terry Norton

Overview of this book

For the absolute beginner to any concept of programming, writing a script can appear to be an impossible hurdle to overcome. The truth is, there are only three simple concepts to understand: 1) having some type of information; 2) using the information; and 3) communicating the information. Each of these concepts is very simple and extremely important. These three concepts are combined to access the feature set provided by Unity. "Learning C# by Developing Games with Unity 3D Beginner's Guide" assumes that you know nothing about programming concepts. First you will learn the absolute basics of programming using everyday examples that you already know. As you progress through the book, you will find that C# is not a foreign language after all, because you already know the words. With a few keywords and using substitution, before you know it, you'll be thinking in code. The book starts by explaining in simple terms the three concepts you need for writing C# code and scripts: 1) variables to hold information; 2) methods (functions) to use the information; and 3) Dot Syntax to communicate the information where it's needed. The book builds on these concepts to open up the world of C# coding and Unity scripting. You will use this new power to access the features provided in Unity's Scripting Reference. The first half of this book is devoted to the code writing beginner. The concepts of variables, methods, Dot Syntax, and decision processing are fully explained. Since C# is an actual programming language, we take advantage of this to develop a State Machine to help control and organize each phase of a Unity project. Once the basic programming concepts are established and we have some State Machine organization, the features and power of Unity are accessed using the Scripting Reference. If you're looking to learn C# for Unity then this is the book that offers everything you need and more - so discover what C# offers today and see your work come to life as complete games!
Table of Contents (21 chapters)
Learning C# by Developing Games with Unity 3D Beginner's Guide
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

PlayStateScene1_1: (1 of 2 available States in Scene1)


using UnityEngine;
using System.Collections;
using Assets.Code.Interfaces;

namespace Assets.Code.States
{
  public class PlayStateScene1_1 : IStateBase
  {
    private StateManager manager;
    private GameObject player;

    public PlayStateScene1_1 (StateManager managerRef)
    {
      manager = managerRef;
      if(Application.loadedLevelName != "Scene1")
        Application.LoadLevel("Scene1");
      
      player = GameObject.Find("Player");
      player.rigidbody.isKinematic = false;
            
      foreach(GameObject camera in                 manager.gameDataRef.cameras)
      {
        if(camera.name != "LookAt Camera")
          camera.SetActive(false);
        else
          camera.SetActive(true);
      }
    }
  
    public void StateUpdate()
    {
      if(manager.gameDataRef.playerLives <= 0)
      {
        manager.SwitchState(new                   LostStateScene1(manager));
        manager.gameDataRef.ResetPlayer();
        player.rigidbody.isKinematic = true;
        player.transform.position = new 
          Vector3(50, .5f, 40);
      }
      
      if(manager.gameDataRef.score >= 2)
      {
        manager.SwitchState(new                   WonStateScene1(manager));
        player.rigidbody.isKinematic = true;
        player.transform.position = new 
          Vector3(50, .5f, 40);
      }
    }

    public void ShowIt()
    {
      GUI.Box(new Rect(10,10,100,25),
        string.Format("Score: "+                 manager.gameDataRef.score));
      
      if(GUI.Button(new 
        Rect(Screen.width/2 - 130, 10, 260, 30),
        string.Format("Click here or Press 2 for 
        Level 1, State 2"))
        || Input.GetKeyUp(KeyCode.Alpha2))
      {
        manager.SwitchState(new                   PlayStateScene1_2(manager));
      }
      
      GUI.Box(new Rect(Screen.width - 110,10,100,25),
        string.Format("Lives left: "+               manager.gameDataRef.playerLives));
    }
  }
}