Joder, no se porque pero siempre suelo encontrar la respuesta yo solo antes de que alguien lo responda...
En fin, aquí el problema estaba en que una vez finalizaba el script también finalizaban los threads. No se porque, teóricamente los threads son hilos independientes, pero es así.
Total, que lo único que tenias que hacer era que el always del script hiciese bucle. Y poner un if, para que el script siempre estuviese activo pero los threads solo se declararan una vez. En fin, esto:
Código: Seleccionar todo
import bge
import threading
def func1():
while 1:
print(\"Thread 1\")
def func2():
while 2:
print(\"Thread 2\")
Ones = bge.logic.getCurrentController().owner[\"Ones\"]
if Ones == False:
Thr1 = threading.Thread(target = func1)
Thr1.start()
Thr2 = threading.Thread(target = func2)
Thr2.start()
Ones == True
Hay una propiedad además booleana. Eso es para que solo se ejecute el codigo la primer vez. Se podria hacer tambien con una variable global en otro script pero eso ya seria complicar mucho el rollo.
Ahora solo hace falta hacer algo para que cuando se detenga el BGE tambien lo hagan los thread, pero ya se me ocurrira argo. Saludos!