Si bien, en general, recomendamos desplegar sus smart contracts mediante el Builder, reconocemos que hay casos de uso donde desplegar un smart contract desde Unity (o una aplicación hecha con Unity) es útil.

El despliegue de contratos implica enviar una transacción, lo cual se realiza mediante una tarea asíncrona. Puede usar await al llamar a SequenceWallet.DeployContract dentro de una tarea asíncrona si desea obtener directamente el objeto ContractDeploymentReturn. O bien, puede tomar el enfoque recomendado, que es configurar funciones manejadoras para los eventos SequenceWallet.OnDeployContractComplete y SequenceWallet.OnDeployContractFailed y llamar al método SequenceWallet.DeployContract desde cualquier lugar (sin await).

SequenceWallet.DeployContract es básicamente un envoltorio para una llamada muy especial a SequenceWallet.SendTransaction y, por lo tanto, puede esperar recibir también los eventos SequenceWallet.OnSendTransactionComplete o SequenceWallet.OnSendTransactionFailed.

public void OnDeployContractCompleteHandler(SuccessfulContractDeploymentReturn result) {
    Address newlyDeployedContractAddress = result.DeployedContractAddress;

    // Do something
}

public void OnDeployContractFailedHandler(FailedContractDeploymentReturn result) {
    // Do something
}

public void OnWalletCreatedHander(SequenceWallet wallet) {
    wallet.OnDeployContractComplete += OnDeployContractCompleteHandler;
    wallet.OnDeployContractFailed += OnDeployContractFailedHandler;
}

Si no está familiarizado con el trabajo con eventos en Unity, consulte esta excelente publicación en Reddit.

Para desplegar un contrato, primero debe compilar el código de su smart contract a bytecode y agregar el bytecode como una cadena hexadecimal en uno de sus scripts de C#.

Para desplegar un smart contract, puede usar este fragmento de código:

string bytecode = "Here you'll paste your compiled bytecode"
_wallet.DeployContract(Chain.Polygon, bytecode);