- 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.