Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Prosím o pomoc s unity scriptem. (nejde spustit vícekrát.)

Mám dva skripty. Po kliknutí na klávesz X se mají oba spustit. Problém je v tom že tento script se spouští v pohodě:

var AudioFile : AudioClip;
var alreadyUpdated = false;

function Update() {
    if (!alreadyUpdated && Input.GetKey(KeyCode.X)) {
        alreadyUpdated = true;    
        audio.clip = AudioFile;
        audio.Play();
    }
}

Ale tento jde spustit jen poprvé a vícekráte ne:

var texture1 : Texture2D;
var texture2 : Texture2D;

var alreadyUpdated = false;

function Update() {
    if (!alreadyUpdated && Input.GetKey(KeyCode.X)) {
        alreadyUpdated = true;
        RenderSometing();
    }
}
function RenderSometing() {


yield WaitForSeconds(1);
renderer.material.mainTexture = texture1;

yield WaitForSeconds(1);
renderer.material.mainTexture = texture2;



}



Když přidělím každému jinou klávesu, tak fungují, ale oba na stejnou klávesu se nespustí (pouze poprvé). Nejde nějak spojit tyto 2 skripty, aby fungovali na jednu klávesu? Nebo proč se ten druhej spustí pouze poprvé? Když jede sám tak funguje v pohodě, ale oba současně ne.

Předmět Autor Datum
Pokud nejdou ty dva spojit, tak by mě stačilo toto. Následující kód se spustí při každém kliknutí, a…
Dáda456 27.09.2013 09:45
Dáda456
var texture1 : Texture2D; var texture2 : Texture2D; var AudioFile : AudioClip; var alreadyUpdated =…
Wikan 27.09.2013 10:13
Wikan
Ono mi to nefunguje. Spustí se mi taky pokaždé zvuk, ale ty obrázky pouze poprvé. Jelikož mě to děsn…
Dáda456 27.09.2013 10:42
Dáda456
najprv musis pochopit co si tam do toho scriptu napisal. Update sa spusta pri kazdom update obrazovk…
MM.. 27.09.2013 10:56
MM..
Já to prostě dohromady nedám. :-(
Dáda456 27.09.2013 11:19
Dáda456
Tak začni s programováním úplně od začátku, jako to udělal každý. Tvé snažení se zatím dá přirovnat…
Wikan 27.09.2013 11:22
Wikan
A nemůžete mi prosím ještě ukázat tu funkci STOP? A odzačátku načíst?
Dáda456 27.09.2013 11:25
Dáda456
Nechapeme co potrebujes ani jaky presne mas problem. Zatial vieme len ze mas nejake 2scripty a nikto…
MM.. 27.09.2013 11:30
MM..
Zůžil jsem to na jeden kód. Ten má funkce, že po kliknutí na klávesu X se začnou po 1 vteřině střída…
Dáda456 27.09.2013 11:41
Dáda456
tak potom vobec nemozes pouzivat yield, ale musis to uplne od zakladu inac navrhnut. Napr. ze si drz…
MM.. 27.09.2013 11:46
MM..
Aha, a to nejde udělat že když se zmáčkne X, tak aby to udělalo STOP, a pak až se to spustilo? poslední
Dáda456 27.09.2013 11:49
Dáda456

Pokud nejdou ty dva spojit, tak by mě stačilo toto. Následující kód se spustí při každém kliknutí, ale když kliknu třeba 5x tak běží současně 5x a je to na zbláznění. Šlo by udělat aby po kliknutí na X se zastavil a spustil odzačátku? Nechci funkci aby nešel spustit vícekrát, ale aby se vždy stopnul a spustil znovu.

var texture1 : Texture2D;
var texture2 : Texture2D;

function Update() {
if (Input.GetKey(KeyCode.X))
{
RenderSometing();
}
}
function RenderSometing() {

yield WaitForSeconds(9);
renderer.material.mainTexture = texture1;

yield WaitForSeconds(9);
renderer.material.mainTexture = texture2;
}
var texture1 : Texture2D;
var texture2 : Texture2D;
var AudioFile : AudioClip;
var alreadyUpdated = false;

function Update() {
    if (!alreadyUpdated && Input.GetKey(KeyCode.X)) {
        alreadyUpdated = true;    
        audio.clip = AudioFile;
        audio.Play();
        RenderSometing();
    }
}

function RenderSometing() {
    yield WaitForSeconds(1);
    renderer.material.mainTexture = texture1;

    yield WaitForSeconds(1);
    renderer.material.mainTexture = texture2;
}

Fakt by sis měl o tom něco přečíst, tímhle stylem neuděláš vůbec nic.

Ono mi to nefunguje. Spustí se mi taky pokaždé zvuk, ale ty obrázky pouze poprvé. Jelikož mě to děsně zajímá, tak se jedu podívat odpoledne do města na knížky o tom. Já bych potřeboval v tomto jiném scriptu aby se spustilo vždy od začátku. Mám ten kód větší a je tam 15 obrázků, když na něho kliknu vícekrát tak to skáče jeden přes druhej, nešlo by aby se po kliknutí provedlo něco jako STOP a spustilo se to znova? To je moje jediná záchrana. Je to můj poslední dotaz, slibuju. Existuje taková funkce? Já to hledal do 3 do noci a nic. Většina návodů je na EN stránkách.

V tomto kódu něco jako STOP a ZNOVA SPUSTIT po kliknutí na X, (aby pokud to běží se to vyplo a zaplo odzačátku.

var texture1 : Texture2D;
var texture2 : Texture2D;

function Update() {
if (Input.GetKey(KeyCode.X))
{
RenderSometing();
}
}
function RenderSometing() {

yield WaitForSeconds(9);
renderer.material.mainTexture = texture1;

yield WaitForSeconds(9);
renderer.material.mainTexture = texture2;
}

Nechapeme co potrebujes ani jaky presne mas problem. Zatial vieme len ze mas nejake 2scripty a nikto nechape ci si ich tam nadrbal obe naraz, alebo co ti na ktorom presne nefunguje. Musis sem davat presne kompletne zdrojaky s presnym popisom co to robi alebo nerobi, inac mozme len hadat

Zůžil jsem to na jeden kód. Ten má funkce, že po kliknutí na klávesu X se začnou po 1 vteřině střídat obrázky. Jenomže když zmáčknu klávesu X třeba 10x, tak se spustí ten script 10x najednou a lítá jeden obrázek přes druhej. Potřeboval bych přidat funkci aby se po stisknutí X pokud je script spuštěnej, tak aby se zastavil a spustil odzačátku. Aby běžel jenom jednou odznova.

var texture1 : Texture2D;
var texture2 : Texture2D;
var texture3 : Texture2D;
var texture4 : Texture2D;
var texture5 : Texture2D;
var texture6 : Texture2D;

function Update() {
if (Input.GetKey(KeyCode.X))
{
RenderSometing();
}
}
function RenderSometing() {

yield WaitForSeconds(1);
renderer.material.mainTexture = texture1;

yield WaitForSeconds(1);
renderer.material.mainTexture = texture2;


yield WaitForSeconds(1);
renderer.material.mainTexture = texture3;

yield WaitForSeconds(1);
renderer.material.mainTexture = texture4;


yield WaitForSeconds(1);
renderer.material.mainTexture = texture5;

yield WaitForSeconds(1);
renderer.material.mainTexture = texture6;
}

tak potom vobec nemozes pouzivat yield, ale musis to uplne od zakladu inac navrhnut. Napr. ze si drzis v nejakej premennej ze ktory obrazok sa momentalne zobrazuje, potom vzdy po 1 sekunde ho zmenis (zvysis tu premennu), a klavesa nastavi premennu zas na 0. Apod.
Moznosti je mnoho, ono rozmyslanie nad navrhom architektury SW je uplne prva vec predtym jak sa nieco zacne pisat, zavisi od toho co ten program ma robit ked bude hotovy :)

Zpět do poradny Odpovědět na původní otázku Nahoru