第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

修改游戲中的預(yù)制件,游戲結(jié)束時(shí)恢復(fù)原狀

修改游戲中的預(yù)制件,游戲結(jié)束時(shí)恢復(fù)原狀

C#
慕森卡 2023-08-20 14:49:32
在我的游戲中,有多種類(lèi)型的射彈。我有來(lái)自玩家和一些敵人的射彈。但所有這些射彈都是由同一個(gè)腳本引導(dǎo)的。為了讓每個(gè)射彈有不同的行為,我為每個(gè)射彈制作了一個(gè)預(yù)制件,當(dāng)“武器”觸發(fā)它時(shí),它會(huì)實(shí)例化。這樣,每個(gè)預(yù)制件都有自己的損壞和其他組件的統(tǒng)計(jì)數(shù)據(jù)。在游戲中,我希望用戶能夠更改預(yù)制件“命中時(shí)造成傷害”,但是一旦用戶死亡并重新啟動(dòng)游戲,就需要將其恢復(fù)。所以我的問(wèn)題是,在我的升級(jí)菜單中,如何更改每個(gè)不同射彈的 DamageOnhit 值,因?yàn)檫@些射彈都附加到不同的武器上。我的 3 個(gè)不同的射彈預(yù)制件(將來(lái)會(huì)更多) 每個(gè)預(yù)制件的 int 計(jì)數(shù)器我的射彈會(huì)導(dǎo)致每個(gè)不同的射彈以 1 的標(biāo)準(zhǔn)傷害開(kāi)始。升級(jí)菜單    public void UpgradeDamage ()    {      Projectile.DamageOnHit += 1;    //  ScoreManager.Score -= upgradeCost;      UpdateValues();    }我希望能夠?yàn)槊總€(gè)不同的預(yù)制件升級(jí)這個(gè)值。我嘗試將 DamageOnHit 更改為靜態(tài),但一旦我升級(jí)了該值。所有的射彈都會(huì)升級(jí)。這不是我想要的,因?yàn)槲蚁M軌騿为?dú)更改每個(gè)預(yù)制件。
查看完整描述

2 回答

?
寶慕林4294392

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊

您創(chuàng)建一個(gè) BulletManager.cs(將其附加到始終處于活動(dòng)狀態(tài)的對(duì)象或空游戲?qū)ο螅?/p>


public static BulletManager instance;

private void Awake

{

  if ( instance == null ) //this creates a Singleton so you can access it directly from everywhere, won't go deep into explaining how it works exactly

    {

        instance = this;

    }

    else

    {

        Destroy (gameObject);

    }

}


public int machinegunDmg; //set the initial values in the editor

public int shotgunDmg;

public int skeletonDmg;

現(xiàn)在用適當(dāng)?shù)臉?biāo)簽標(biāo)記所有預(yù)制件,假設(shè)您為機(jī)槍射彈預(yù)制件使用“MachineGunProj”標(biāo)簽。


您附加到所有預(yù)制件的相同腳本應(yīng)該會(huì)受到該 BulletManager 腳本的損壞,具體取決于您實(shí)例化的預(yù)制件。


private int DamageOnHit;  

//this will get called everytime you instantiate a new prefab that holds this script; it will check for its own tag and depending on it will set the damage in this script to be equal to the appropriate value from BulletManager.cs

private void Start

{

    if(this.gameObject.CompareTag("MachineGunProj"))

    {

      this.DamageOnHit = BulletManager.instance.machinegunDmg;

    }

    else if(this.gameObject.CompareTag("ShotgunProj"))

    {

      this.DamageOnHit = BulletManager.instance.shotgunDmg;

    }

    //else if -- do the same for every prefab you have

}

至于升級(jí),您需要更改 BulletManager.cs 中的值。例如:


public void UpgradeMachineGun()

{

   BulletManager.instance.machinegunDmg++; //next time you spawn a machinegun prefab it will take the upgraded value

}

*我直接在這里編寫(xiě)了上面的代碼,沒(méi)有任何文本編輯器或其他任何東西的幫助,所以我可能錯(cuò)過(guò)了一些東西,但總的來(lái)說(shuō),這是它應(yīng)該如何工作的想法。如果有什么不起作用,我將非常樂(lè)意為您提供進(jìn)一步的幫助:)


查看完整回答
反對(duì) 回復(fù) 2023-08-20
?
互換的青春

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

兩種選擇:

  • 在射彈的DamageOnHit每個(gè)實(shí)例上設(shè)置

    每次Instantiate創(chuàng)建新的射彈預(yù)制件時(shí),獲取其Projectile組件并將其設(shè)置DamageOnHit為所需的值。
    。

  • 每次游戲重新啟動(dòng)時(shí),復(fù)制每個(gè)預(yù)制資源

    我們將它們稱(chēng)為“ProjectileShotgunProto”和“ProjectileSkeletonProto”。Instantiate(ProjectileShotgunProto)當(dāng)玩家射擊時(shí)您將調(diào)用它們,而不是實(shí)例化您的原始預(yù)制件。

無(wú)論如何,請(qǐng)勿更改代碼中的原始預(yù)制資源,否則會(huì)導(dǎo)致問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2023-08-20
  • 2 回答
  • 0 關(guān)注
  • 145 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)