728x90

 

위의 영상을 참고하여 유니티에서의 화상 통화 기능 구현 실습을 진행하였다. 


1. Agora 

Agora SDK:는 2017 LTS 이상 버전을 지원하며 Agora.io 에 접속항 새 프로젝트를 생성한다. 

위의 영상과 달리 유니티 에셋 스토어에서는 더이상 Agora SDK 를 지원하지 않는 것같기 때문에 다음 링크에서 다운받아준다,  

https://docs.agora.io/en/sdks?platform=unity

 

 

agora에서 생성한 프로젝트의 app ID, project name을 가지고 아래 문서를 참고하여 코드를 작성하고 빈 오브젝트를 생성해서 스크립트를 적용한다. 

https://docs.agora.io/en/video-calling/get-started/get-started-sdk?platform=unity#set-up-an-event-handler

 

https://docs.agora.io/en/video-calling/get-started/get-started-sdk?platform=unity#set-up-an-event-handler

 

docs.agora.io

자꾸 클래스명과 파일명이 다르다는 오류가 발생하는데 다른 이름도 써보고 이것저것다 해봤는데 왜 안되는거지..

728x90

이 글은 인프런 "솔리디티 깨부수기" 상속4, 5 강의를 수강한 후 정리한 글입니다. 

 

[지금 무료] 솔리디티 깨부수기 | D_One - 인프런

D_One | 이 강의를 통해서, 스마트 컨트랙 제작을 위한 솔리디티 언어를 배울수 있습니다., 코딩이 처음인 분들도 OK! 처음 배우는 솔리디티, 쉽게 시작해보세요. 강의 주제 📖 [사진] 이 강의에서

www.inflearn.com


super

super 은 함수를 오버라이딩 할 때 사용하며 super을 통해 원래 함수를 가지게 된다. 

아래 예제를 통하여 설명하도록 하겠다. 부자관계의 스마트 컨트렉이 있고, Son 컨트랙은 father 컨트랙 안에 who 함수를 상속받아 오버라이딩한다. 

// SPDX-License-Identifier:GPL-30
pragma solidity >= 0.7.0 < 0.9.0;

contract Father {
    event FatherName(string name);
    function who() public virtual{
        emit FatherName("KimDaeho");
    }
}


contract Son is Father{
    event sonName(string name);
    function who() public override{
        emit FatherName("KimDaeho");
        emit sonName("KimJin");
    }
}

 

Son 컨트랙은 , 아버지의 FatherName 이벤트를 그대로 유지하고, 자신의 sonName 이벤트를 추가했다. 만약, Son 컨트랙 부분의 오러라이딩한 함수 who 안에 여러줄의 코드를 써야한다면, 매우 번거로워 진다. 

 

이때 사용할 수 있는것이  super 으로 상속받을 함수를 그자체로 가져온다. 

 

// SPDX-License-Identifier:GPL-30
pragma solidity >= 0.7.0 < 0.9.0;

contract Father {
    event FatherName(string name);
    function who() public virtual{
        emit FatherName("KimDaeho");
    }
}

contract Mother {
    event MotherName(string name);
    function who() public virtual{
        emit MotherName("leeSol");
    }
}

contract Son is Father{
    event sonName(string name);
    function who() public override{
        super.who();
        emit sonName("KimJin");
    }
}

 

 


상속의 순서

 

상속의 순서를 통하여 super가 어떻게 작동하는지에 대해서 알아보겠다. 

// SPDX-License-Identifier:GPL-30
pragma solidity >= 0.7.0 < 0.9.0;

contract Father {
    event FatherName(string name);
    function who() public virtual{
        emit FatherName("KimDaeho");
    }
}

contract Mother {
    event MotherName(string name);
    function who() public virtual{
        emit MotherName("leeSol");
    }
}

contract Son is Father, Mother{
    
    function who() public override(Father,Mother){
        super.who();
    }
}

 

예시로 가족 관계의 스마트 컨트랙을 작성하고, Son 컨트랙은 Father 와 Mother를 상속 받는다.  각각 father와 mother은 동일하게 who 함수가 있고, 오버라이딩하여 super을 통해 son 컨트랙에 가져온다.

위에서 super를 사용하여 who 함수를 상속받을 때 어떤 스마트 컨트랙의 함수를 상속 받을까?

 

Mother의 것이 상속되어서 leeSol 이 반환된다.

이유는 Son is Father , Mother 이기 때문에 즉 Mother 두번째 (최신) 으로 상속 받았기에 그렇다.

 

728x90

이 글은 인프런 "솔리디티 깨부수기" 강의를 수강한 후 정리한 글입니다. 

 

[지금 무료] 솔리디티 깨부수기 | D_One - 인프런

D_One | 이 강의를 통해서, 스마트 컨트랙 제작을 위한 솔리디티 언어를 배울수 있습니다., 코딩이 처음인 분들도 OK! 처음 배우는 솔리디티, 쉽게 시작해보세요. 강의 주제 📖 [사진] 이 강의에서

www.inflearn.com


 

 

indexed는 이벤트의 키워드로 블록들안에 출력된 이벤트들을 필터하여 특정한 이벤트 값들을 가지고 올 수 있다.

// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0 <0.9.0;

contract Lec14 {
    event numberTracker(uint256 indexed num, string str);
    event numberTracker2(uint256 indexed num, string str);

    uint256 num =0;
    function PushEvent(string memory _str) public {
        emit numberTracker(num,_str);
        emit numberTracker2(num,_str);
        num ++;
    }
}

위의 예제에서 numberTracker2는 indexed가 있어 num을 통해 특정 이벤트 값들을 갖고 올 수 있다.

예를 들어 numberTraker2가 10개의 이벤트가 있다고 가정하고, 5라는 num만 필요하다면, 5만 입력하여 numberTraker2의 이벤트를 가져올 수 있다.

numberTraker는 동일한 가정에서 5라는 num만 필요하다면, 5만 적힌 이벤트를 갖고 올 수 없다.

즉, indexed를 통해 원하는 이벤트 값들을 필터링하여 갖고올 수 있음을 알 수 있다.

 

배포를 진행하면 logs에서 numberTracker와 numberTracker2가 출력된다. 

위에는 출력은 하되 특정 값들을 갖고 오는 상태가 아니기 때문에 차이점을 알아보기 위해 vscode로 확인해보겠다. 

 

위에와 같이 js 코드를 작성할 수 있으며, getPastEvents 함수를 생성하여 num을 통해 필터링을 진행할 수 있다. num은 2나 1일 때인 이벤트를 갖고올 수 있다.

fromBlock과 toBlock은 블록들의 범위를 나타낸다. 

 

이후 3개의 이벤트를 생성하면 블록안에 들어가게 되고, numberTracker은 indexed를 사용하지 않았기 때문에 필터링이 안되고 전부 출력되며, numberTracker2는 두 번째와 첫 번째 이벤트만 출력된다. 

+ Recent posts