public class SignScript : MonoBehaviour
{
public string text;
}
다음과 같이 public으로 변수를 선언하면 unity 엔진에서 해당 변수의 값을 오브젝트마다 넣어줄 수 있다.
이때 string의 경우 Enter는 입력되지 않고, \n과 같은 줄바꿈 문자를 삽입하더라도 줄바꿈이 일어나지 않는다.
이는 입력한 \n을 \\n으로 인식해 작성한 그대로 화면에 출력하기 때문이다.
해결방법
1. Replace함수 사용
public class SignScript : MonoBehaviour
{
public string text;
// Start is called before the first frame update
void Start()
{
text = text.Replace("\\n", "\n");
}
}
\\n을 \n으로 치환하면, 원래 역할인 줄바꿈을 당연히 잘 수행한다.
하지만...
\t, \r 등 사용하는 특수문자마다 다 replace를 해줘야 한다
정말로 화면에 "\n" 문자가 찍혀야 한다면 방법이 없다
이런 문제점이 발생한다
2. TextArea 설정
public class SignScript : MonoBehaviour
{
[TextArea]
public string text;
}
string 위에 [TextArea]를 선언하면, Unity의 Text입력부분이 여러줄 입력 가능한 큰 공간이 된다.
이 공간에서는 Enter로 줄바꿈 입력이 가능하니 있는 그대로 입력해 사용할 수 있다.
※ 주의사항
TextArea를 붙였다가 제거한 경우, 원래의 한줄 Text로 돌아오며 기존 입력의 최상위 한줄만 보이게 된다.
하지만 실제로는 입력했던 값들이 다 그대로 남아 있으니, 제대로 삭제하지 않으면 2번째 줄부터는 그대로 유지되게 된다.
그렇게 받은 pin 정보는, 이전에 취득했던 requestToken과 함께 다시 한번 트위터에게 제출됩니다.
getOAuthAccessToken함수를 이용합니다.
이 과정까지 성공적으로 완료했다면, 정상적으로 AccessToken을 획득한 것으로 이제 이 계정은 제 맘대로 할 수 있는 겁니다. (안됩니다)
twitter.setOAuthAccessToken(finalAccessToken);
try {
//계정명 획득
User user = twitter.verifyCredentials();
System.out.println(user.getScreenName());
//계정에 트윗 등록
String msg = "this is test tweet from application";
Status status = twitter.updateStatus(msg);
}catch(Exception e) {
e.printStackTrace();
}
다음 코드와 같이, AccessToken을 Set해주기만 하면 사용자 ID를 가져올 수도 있고, 원하는 문자열로 트윗을 보낼 수도 있습니다.
4. AccessToken을 저장해 둬 재사용 가능하게 하기
여기까지만 하면, 매번 AccessToken을 획득해야한다는 수고로운 일이 생깁니다.
물론 그럴 필요는 없습니다. AccessToken만 저장해두면 언제든지 꺼내서 재사용이 가능해집니다.
위에서 획득한 AccessToken은 Consumer key/secret처럼 key/secret 두가지 token으로 되어 있습니다.
getToken() 함수와, getTokenSecret()함수가 각 token을 획득 할 수 있으며, 플젝에 직접 박아놓든, DB에 저장하거나 한 후 필요할 때 조회하면 됩니다.
twitter = TwitterFactory.getSingleton();
finalAccessToken=new AccessToken(TwitterInfo.getInstance().getAccessToken(),
TwitterInfo.getInstance().getAccessSecret());
twitter.setOAuthAccessToken(finalAccessToken);
try {
User user = twitter.verifyCredentials();
System.out.println(user.getScreenName());
String msg = "this is test tweet from application";
Status status = twitter.updateStatus(msg);
}catch(Exception e) {
e.printStackTrace();
}
저는 TwitterInfo class에 값을 직접 저장했으며, consumer token과 함께 생성자에서 호출해 설정하는 식으로 마무리했습니다.