- Home /
A namespace can only contain types and namespace declarations
Hey, guys. So I'm fairly new to Unity and to the C# language and am getting "error CS0116: A namespace can only contain types and namespace declarations" on line 63,14 which is this piece of code:
     void Update () {
         if(Input.GetKeyDown(KeyCode.Tab))
         {
             TargetEnemy();
         }
     }
I'm sure it's a simple solution, I just can't seem to figure it out! Here's the full code, if it's needed?
 enter code hereusing UnityEngine;
 using System.Collections;
 using System.Collections.Generic;
 
 public class Targetting : MonoBehaviour {
 public List<Transform> targets;
 private Transform myTransform;
 public Transform selectedTarget;
 
 // Use this for initialization
     void Start () {
     targets = new List<Transform>();
     selectedTarget = null;
     AddAllEnemies();
     myTransform = transform;
     }
     public void AddAllEnemies()
     {
     GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");
         foreach(GameObject enemy in go)
             AddTarget(enemy.transform);
     }
     public void AddTarget(Transform enemy) {
         targets.Add(enemy);
     }
     private void SortTargetsByDistance()
     {
     targets.Sort(delegate(Transform t1, Transform t2){
         return(Vector3.Distance(t1.position, myTransform.position).CompareTo(Vector3.Distance(t2.position, myTransform.position)));
         });
     }
 
     private void TargetEnemy()
     {
     if(selectedTarget == null){
     SortTargetsByDistance();
     selectedTarget = targets[0];
     }
     else{
         int index = targets.IndexOf(selectedTarget);
             if(index < targets.Count - 1){
             index++;
         }
     else{
         index = 0;
         }
     DeselectTarget();
     selectedTarget = targets[index];
     SelectTarget();
     }
 }
     private void SelectTarget(){
     selectedTarget.renderer.material.color = Color.red;
 }
     
     private void DeselectTarget(){
         selectedTarget.renderer.material.color = Color.blue;
     selectedTarget = null;
     }
 }
 // Update is called once per frame
 
     void Update () {
         if(Input.GetKeyDown(KeyCode.Tab))
         {
             TargetEnemy();
         }
 }
 
Thanks in advance.
Answer by Dave-Carlile · May 02, 2013 at 02:24 AM
- I assume your actual code doesn't have "enter code here" as the first few characters? 
- Looks like on line 51 you have an extra } that closes out the class, and then you have more code after that. This is most likely the cause of the error, but I'm not 100% sure because the code is hard to follow because of how you're indenting things. 
- Do some research on a good, standard way to do indentation in your code. That will make it much easier to spot these sorts of things. 
- Aha, no of course not, didn't realise that stayed in there when adding the script! 
- Hmm, yeah I thought that at first but when I got rid of it a new error appeared for line 52? 
- Yeah, sorry about the way it's structured. I'll do some research on good ways to do indentation in my code! 
Answer by Eric5h5 · May 02, 2013 at 02:25 AM
Your Update function is outside the class declaration (and there are too many braces anyway). It's an extremely good idea to be consistent and not sloppy with spacing/layout, so this sort of thing can be seen at a glance.
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                