I am doing a little project using animation nodes and I used a script in the node tree but it keep saying "Local variable referenced before assignment",I used global before the variable and it say "Syntax error".

My code is just as simple as :

if Bool == 1 :
    Always = 1

here is my node: Nodes So what am I doing wrong?

  • $\begingroup$ a little bit more context would be helpful.., can you maybe add a screenshot to your question? And is the variable Bool declared somewhere? $\endgroup$ Apr 18, 2016 at 18:53
  • $\begingroup$ @JacquesLucke I edited the question. $\endgroup$
    – Omar Emara
    Apr 19, 2016 at 11:26

1 Answer 1


The problem is that you don't assign a value to the 'Always' variable in all cases.

AN takes your code and makes a function from it that is executed by the Invoke Subprogram node. The generated code looks like so:

enter image description here

Line 16 throws the error here because you haven't used 'Always' before. You can fix by changing your code to something like this:

if Bool == 1:
    Always = 1
    Always = 0
  • $\begingroup$ well,I cant return a value if it is not equal to 1,I have an object that moves and if this object touches another object a text will appear but after the object go away and they not touching anymore the text will disappear,but I want it to stay after the first touch,so I was hopping hat this script will assign 1 to the Always variable after the first touch and it wont disappear.is there is another way to do that? $\endgroup$
    – Omar Emara
    Apr 19, 2016 at 11:40
  • $\begingroup$ Unfortunally this isn't really possible, because it is simulation: The current frame depends on the frames before. AN can't do simulation in nice ways. $\endgroup$ Apr 19, 2016 at 11:42
  • $\begingroup$ well,can I write a script that do something if the value is 1 in animation nodes,like creating a custom property? $\endgroup$
    – Omar Emara
    Apr 19, 2016 at 11:45
  • $\begingroup$ Yes sure. The problem is when do you want to reset this property when you go backwards in time. $\endgroup$ Apr 19, 2016 at 11:46
  • $\begingroup$ I won't use frames then,I will create the custom property if the objects touch. $\endgroup$
    – Omar Emara
    Apr 19, 2016 at 11:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .