這篇文章主要介紹“Unity怎么快速與NEO區(qū)塊鏈進(jìn)行交互”的相關(guān)知識(shí),小編通過(guò)實(shí)際案例向大家展示操作過(guò)程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),希望這篇“Unity怎么快速與NEO區(qū)塊鏈進(jìn)行交互”文章能幫助大家解決問(wèn)題。
成都創(chuàng)新互聯(lián)公司為您提適合企業(yè)的網(wǎng)站設(shè)計(jì)?讓您的網(wǎng)站在搜索引擎具有高度排名,讓您的網(wǎng)站具備超強(qiáng)的網(wǎng)絡(luò)競(jìng)爭(zhēng)力!結(jié)合企業(yè)自身,進(jìn)行網(wǎng)站設(shè)計(jì)及把握,最后結(jié)合企業(yè)文化和具體宗旨等,才能創(chuàng)作出一份性化解決方案。從網(wǎng)站策劃到成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè), 我們的網(wǎng)頁(yè)設(shè)計(jì)師為您提供的解決方案。
我提供這個(gè)腳本的原因是為了證明擁有良好入門(mén)體驗(yàn)的重要性。許多的加密貨幣項(xiàng)目(以及一些游戲)都會(huì)要求用戶進(jìn)行大量的學(xué)習(xí)從而學(xué)會(huì)如何使用這個(gè)應(yīng)用程序。長(zhǎng)遠(yuǎn)上來(lái)說(shuō),我們需要更好地了解如何引入新用戶,同時(shí)在這么做的時(shí)候盡可能地減少摩擦。用戶已經(jīng)投入時(shí)間下載游戲了,當(dāng)開(kāi)始要求占用他們更多時(shí)間的時(shí)候,如果能在開(kāi)始玩游戲的時(shí)候,有著越少的必要的點(diǎn)擊操作和學(xué)習(xí)要求,他們就越不可能立馬刪除游戲。不要讓用戶去思考。
理想情況下,我是希望能完全移除第一個(gè)界面,只需將用戶直接放入游戲中即可。但持有資產(chǎn)的問(wèn)題是很明顯的,你必須非常清楚何時(shí)以及如何處理這些資產(chǎn)。當(dāng)用戶忘記或者丟失他們的密鑰時(shí),你無(wú)法直接進(jìn)入后臺(tái)幫助用戶重置和檢索他們的數(shù)據(jù)。一個(gè)好的中間解決方案是游戲的開(kāi)始部分不用涉及到任何錢(qián)包內(nèi)容,只有用戶想要更好地嘗試你的錢(qián)包功能時(shí),才會(huì)提示用戶輸入這些錢(qián)包信息。希望你們能自行嘗試探索自己的解決方案。
當(dāng)玩家得分超過(guò)某個(gè)閾值時(shí),我們會(huì)給他們代幣作為獎(jiǎng)勵(lì)。GAS在某種程度上是NEO區(qū)塊鏈中的實(shí)際代幣,所以我們會(huì)使用它來(lái)作為獎(jiǎng)勵(lì)。
在創(chuàng)建一個(gè)真正的游戲時(shí),你將不得不與攻擊作斗爭(zhēng),而斗爭(zhēng)的同時(shí)又要保持游戲的趣味性和經(jīng)濟(jì)的流動(dòng)性并不是一件容易的事情。出于演示的目的,我們?cè)谶@里會(huì)進(jìn)行簡(jiǎn)化。在真正的在線游戲中,你需要多種反作弊機(jī)制,但最終在游戲中,我們知道我們永遠(yuǎn)都無(wú)法避免所有的攻擊。某個(gè)地方的某個(gè)人會(huì)下定決心去破壞你的游戲。否則的話你會(huì)遺漏一個(gè)關(guān)鍵的代碼漏洞。我們?cè)噲D通過(guò)防止最為常見(jiàn)的攻擊和睡眠不足來(lái)找到平衡,我們經(jīng)常以這樣一種方式分割經(jīng)濟(jì),以便其他玩家的游戲體驗(yàn)不會(huì)在這個(gè)過(guò)程中受到損害。
創(chuàng)建一個(gè)名為NEORewardManager的游戲?qū)ο驡ameObject,將它作為其他NEO管理器的子對(duì)象。創(chuàng)建一個(gè)名為NEORewardManager的腳本并復(fù)制粘貼以下代碼:
using System; using System.Collections; using UniRx; using UnityEngine; public class NEORewardManager : MonoBehaviour { [SerializeField] private NEOManager neoManager; [SerializeField] private CompleteProject.PlayerHealth playerHealth; [SerializeField] private int rewardThreshold = 50; private bool isGameOver; private void Update() { if(playerHealth.currentHealth <= 0 && !isGameOver) { StartCoroutine(OnGameOver()); isGameOver = true; } else if(playerHealth.currentHealth > 0 && isGameOver) { isGameOver = false; } } private IEnumerator OnGameOver() { yield return new WaitForSeconds(1); Time.timeScale = 0; if(CompleteProject.ScoreManager.score >= rewardThreshold) { StartCoroutine(TrySendGAS(1)); } else { Time.timeScale = 1; } } private IEnumerator TrySendGAS(int amount) { yield return null; try { var tx = neoManager.API.SendAsset(neoManager.MasterKeyPair, neoManager.PlayerKeyPair.Value.address, NEOManager.AssetSymbol, (decimal)amount); if (tx == null) { Debug.LogError("Null Transaction returned"); Time.timeScale = 1; } else { Debug.Log("TX received, checking sync..."); Observable.FromCoroutine(SyncBalance).Subscribe().AddTo(this); } } catch (NullReferenceException exception) { Debug.LogError("There was a problem..."); Time.timeScale = 1; } catch (Exception exception) { Debug.LogError("There was a problem..."); Time.timeScale = 1; } } private IEnumerator SyncBalance() { yield return null; try { //var balances = neoManager.API.GetAssetBalancesOf(neoManager.PlayerKeyPair.Value); //neoManager.GASBalance.Value = balances.ContainsKey(NEOManager.AssetSymbol) ? balances[NEOManager.AssetSymbol] : 0; //if (Mathf.Approximately((float)NEOManager.GASBalance.Value, GameDataSystem.Coins.Value)) //{ // Debug.Log("GAS transferred successfully"); //} //else //{ // Debug.LogWarning("Something's not right." + // //"\nCoins: " + GameDataSystem.Coins.Value + // "\nGAS: " + NEOManager.GASBalance.Value); //} Debug.Log("Balance synced!"); Time.timeScale = 1; } catch (NullReferenceException exception) { Debug.LogWarning("Something's not right." + //"\nCoins: " + GameDataSystem.Coins.Value + "\nGAS: " + neoManager.GASBalance.Value); Time.timeScale = 1; } } }
系統(tǒng)會(huì)等待游戲結(jié)束狀態(tài),游戲結(jié)束后如果玩家得分超過(guò)某個(gè)特定的閾值,系統(tǒng)就會(huì)從主賬戶中轉(zhuǎn)賬GAS到本地玩家賬戶中。 通過(guò)拖放場(chǎng)景中的引用來(lái)連接NEOManager和PlayerHealth。 你還可以將獎(jiǎng)勵(lì)閾值設(shè)置為你想要的任何值; 玩玩看看。 在隨后的回放中,你可以看到數(shù)量的更新,這可以反映出GAS已經(jīng)轉(zhuǎn)賬正常了。恭喜,我們現(xiàn)在已經(jīng)可以與NEO區(qū)塊鏈進(jìn)行一些基本的交互了,耶。
關(guān)于“Unity怎么快速與NEO區(qū)塊鏈進(jìn)行交互”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會(huì)為大家更新不同的知識(shí)點(diǎn)。