8. 1 실행화면
하늘이 좀 예뻐졌고 기본으로 Directional Light가 추가 되었습니다
9. 2 버전업 되면서 다른 점
기본 추가 되어있는 Directional Light의 transform을 살짝 만져주면 노을하늘로 만들 수 있습니다.
10. 2 버전업 되면서 다른 점
기본 추가 되어있는 Directional Light의 transform을 살짝 만져주면 노을하늘로 만들 수 있습니다.
← 요기 해
※주의 : Light의 위치랑은 상관이 없습니다.
11. 2 버전업 되면서 다른 점
http://jinhomang.tistory.com/89
Mecanim Update
1. 각 State에 scripts를 붙일 수 있게
되었습니다.
Script를 생성하면
OnStateEnter
OnStateUpdate
OnStateExit
OnStateMove
OnStateIK
함수를 자동 생성해 작성만 하면 됩니다.
1
2
if(animator.GetCurrentAnimatorStateInfo(0).isName("Idle") )
DoStuff() 이런 코드는 안녕~
12. 2 버전업 되면서 다른 점
http://jinhomang.tistory.com/89
Mecanim Update
2. State Machine의 복잡도를 줄이기 위해 Entry노드와 Exit노드가 추가되었습니다.
Entry부터 분기가 가능하기 때문에 복잡도를 줄일 수 있게 되었습니다.
13. 2 버전업 되면서 다른 점
http://jinhomang.tistory.com/89
Mecanim Update
3. 에디터 스크립트를 통해 애니메이션 에셋을 생성할 수 있게 되었습니다.
근데 썩 깔끔해 보이지는 않네요... 뭐 이렇게 쓴답니다...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Creates the controller
var controller =
UnityEditor.Animations.AnimatorController.CreateAnimatorControllerAtPath ("Assets/Mecanim/StateMachineTransitions.controller");
// Add parameters
controller.AddParameter(“TransitionNow”, UnityEditor.Animations.AnimatorControllerParameterType.Trigger);
controller.AddParameter(“Reset”, UnityEditor.Animations.AnimatorControllerParameterType.Trigger);
controller.AddParameter(“GotoB1″, UnityEditor.Animations.AnimatorControllerParameterType.Trigger);
controller.AddParameter(“GotoC”, UnityEditor.Animations.AnimatorControllerParameterType.Trigger);
// Add StateMachines
var rootStateMachine = controller.layers[0].stateMachine;
var stateMachineA = rootStateMachine.AddStateMachine(“smA”);
var stateMachineB = rootStateMachine.AddStateMachine(“smB”);
var stateMachineC = stateMachineB.AddStateMachine(“smC”);
// Add States
var stateA1 = stateMachineA.AddState(“stateA1″);
var stateB1 = stateMachineB.AddState(“stateB1″);
var stateB2 = stateMachineB.AddState(“stateB2″);
stateMachineC.AddState(“stateC1″);
var stateC2 = stateMachineC.AddState(“stateC2″);
14. 2 버전업 되면서 다른 점
http://jinhomang.tistory.com/89
Mecanim Update
3. 에디터 스크립트를 통해 애니메이션 에셋을 생성할 수 있게 되었습니다.
근데 썩 깔끔해 보이지는 않네요... 뭐 이렇게 쓴답니다...
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
// Add Transitions
var exitTransition = stateA1.AddExitTransition();
exitTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, “TransitionNow”);
exitTransition.duration = 0;
var resetTransition = stateMachineA.AddAnyStateTransition(stateA1);
resetTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, “Reset”);
resetTransition.duration = 0;
var transitionB1 = stateMachineB.AddEntryTransition(stateB1);
transitionB1.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, “GotoB1″);
stateMachineB.AddEntryTransition(stateB2);
stateMachineC.defaultState = stateC2;
var exitTransitionC2 = stateC2.AddExitTransition();
exitTransitionC2.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, “TransitionNow”);
exitTransitionC2.duration = 0;
var stateMachineTransition = rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineC);
stateMachineTransition.AddCondition(UnityEditor.Animations.AnimatorConditionMode.If, 0, “GotoC”);
rootStateMachine.AddStateMachineTransition(stateMachineA, stateMachineB);
15. 2 버전업 되면서 다른 점
http://jinhomang.tistory.com/89
Mecanim Update
4. 더 자연스러운 BlendShape 애니메이션이 가능해졌습니다
직접 weight를 조절해서 사용 할 수 있습니다.
16. 2 버전업 되면서 다른 점
http://jinhomang.tistory.com/89
Mecanim Update
5. Root Motion Authoring(in
generic mode)를 직접 제작할
수 있습니다.
6. 그 밖에 프리뷰 카메라를 개선하고
파라미터에 대한 runtime 접근을
가능하게 했으며 gizmo를 추가하
였고 기타등등의 최적화를 진행하였
다고 합니다.
17. 2 버전업 되면서 다른 점
http://blogs.unity3d.com/2015/02/17/production-workflow-improvements/
제작 워크플로우 개선
1. 모든 Object를 Scene에 저장하지 않습니다.
Unity5 이전에는 열고 닫기만 해도 id가 바뀌거나 속성
이 바뀌었기 때문에 충돌이 빈번했습니다.
하지만 이제는 인스턴스의 수정 내용을 포함한 prefab
object와 신에서 참조되는 오브젝트의 경우만 저장하게
됩니다.
또한 라이트맵핑에 관한 충돌을 줄이기 위해서 별도의 에
셋으로 저장되기 때문에 다른 사람이 라이트맵을 굽고 저
장했다고 해 씬이 충돌나지 않고 라이트맵핑 에셋만 수
정하면 됩니다.
게다가 이제는 scene merging tool을 제공합니다!!
Unity5Unity5 이전
18. 2 버전업 되면서 다른 점
http://blogs.unity3d.com/2015/02/17/production-workflow-improvements/
제작 워크플로우 개선
2. Tracking scene dirty scene
윈도우의 도킹 포지션의 변경이나 특정 에셋을 인스펙팅하는 행위 등등은 scene의 dirty를 만들어 내는데
Unity5부터는 dirty를 undo시스템에서 컨트롤 하게 되었습니다. UndoManager가 판단하기에 동작이
scene에 관계된 것이면 dirty스택에 하나 추가하고 아닌 경우에는 dirty를 추가 하지 않는 식으로 관리를
하게 되었습니다.
3. 그 밖에 Audio Clip 다중 선택 편집이 가능해지고 FBX파일의 스케일 설정이 제대로 적용
되고 64비트 대응을 시작합니다.
4. Transform을 제외한 getter가 없어졌습니다.
GetComponent<>()를 이용하여 접근해야 합니다.
이전버전에서 Unity5프로젝트로 변경한다면 자동으로 컨버팅해줍니다. 친절한 Unity5
19. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-AI.html
AI Update
1. Navmesh외형이 파티셔닝 변경으로 인해 다르게 보일 수 있습니다.
2. NavMeshAgent의 목적지를 설정하는 행위 자체를 통해서는 ‘Stop’호출한 후의 에이전트를
재시작되지 않습니다. Resume을 호출해야 합니다.
3. NavMeshAgent.updatePosition이 fales인 상태에서는 에이전트 위치가 변경되지
않습니다.
4. NavMeshObstacle 컴포넌트의 기본 모양은 박스입니다.
Curving avoidance로 캡슐도 적용할 수 있습니다.
5. 이전버전의 Navmesh는 지원되지 않습니다 업데이트 하고 사용하세요.
홈페이지에서 Rebake Sample code를 제공하고 있습니다. 참고하세요!
20. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Animation.html
Animation Update
1. UnityEditiorlnternal로 접근하였던 것을 UnityEditor.Animations으로 접근해야 합
니다.
UnityEditorInternal.BlendTree -> UnityEditor.Animations.BlendTree
UnityEditorInternal.AnimatorController -> UnityEditor.Animations.AnimatorController
UnityEditorInternal.StateMachine -> UnityEditor.Animations.AnimatorStateMachine
UnityEditorInternal.State -> UnityEditor.Animations.AnimationState
UnityEditorInternal.AnimatorControllerLayer ->
UnityEditor.Animations.AnimatorControllerLayer
2. 또한 대부분의 Acessor들은 배열으로 바뀌었습니다.
UnityEditorInternal.AnimatorControllerLayer layer =
animatorController.GetLayer(index) ->
UnityEditor.Animations.AnimatorControllerLayer layer =
animatorController.layers[index];
21. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Audio.html
Audio Update
1. 3D Audio플래그가 없어졌습니다.
Audio Source에 Spatial Blend 슬라이더를 통해서 3D로 사운드 모핑이 가능합니다.
또한 2D Audio가 default입니다.
2. 오디오 데이터를 미리 로드 할지 안 할지 정할 수 있게 되었습니다.
1. 요구가 있을 때 로딩할 수 있게 되면서 메모리 사용량을 유지하는데 도움이 됩니다.
3. 모든 Audio Clip은 다중편집이 가능합니다.
4. Audio Cilp이 재생되지 않아도 AudioSource.UnPause()할 수 있게 되었습니다.
22. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Audio.html
Audio Update
5. Audio Mixer기능이 생겼습니다.
많은 AudioSource를 가지면 CPU부담을 주게 되는데 Audio Mixer기능을 통한 그룹을 설정
하게 되면 CPU의 부담을 줄일 수 있습니다. 하지만 Audio Mixer는 스크립트 기반 이펙트를
지원하지 않습니다.
23. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Audio.html
Audio Update
6. Audio Setting이 바뀌었습니다.
Real voice count와 virtual voice count를 설정할 수 있습니다. Real voice count는 얼마나 많은 소
리가 동시에 들리는지를 명시하므로, CPU의 소모량과 연관이 있습니다. Virtual voice count는 전체적으로
얼마나 많은 소리가 관리될 수 있는지를 정의합니다. Real voice count가 제한보다 클 경우에는 가장 작게
들리는 소리들은 소리가 커지거나 아니면 다른 큰 소리들이 재생을 멈추기 전까지 재생을 하지 않습니다.
Virtual voice count가 제한보다 클 경우에는 가장 작게 들리는 소리들이 멈추게 됩니다.
7. AudioSetting의 setter들은 사라질 예정이라고 합니다.
대신에 AudioConfiguration이라는 구조체를 사용해 값을 변경해 주어야 합니다.
값을 가져오는 방법은 AudioSettings.GetConfiguration()을 통해야 합니다.
값을 가져온 뒤에는 AudioSetting.Reset()함수를 사용해 설정에 따라 BOOL값을 RETURN합니다.
24. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Audio.html
Audio Update
8. 이어폰이나 HDMI 등을 연결하면서 발생하는 외부이벤트로 인해서 오디오 설정에 변경이 일
어나게 되면 AudioSetting.OnAudioConfigurationChanged(bool
deviceChanged)함수가 invoke됩니다. deviceChange인자는
AudioSetting.Reset()에 의한 것이면 false, 외부환경에 의한 것이면 true를 반환
합니다.
25. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-BakedDataFormats.html
Baked Data format changes
1. Backed Occlusion Culling data format 이 변경되었습니다.
2. Backed Lighting data format 도 변경되었습니다.
모두 다시 구워주셔야 합니다
근데 이게 듣자하니 라이트에 버그가 있다고 합니다?!?!?!?
UnityPackage format change
1. 뭔가 포멧이 바꼈대요 근데 설명은 안해줌...
26. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Plugins.html
Plugins Update
1. 이제 Plugin 폴더에 넣지 않아도 됩니다.
정확히 넣으면 속성값을 알아서 지정해 준다고는 합니
다. 기본값은 Any Platform.
2. 32bit 네이티브 플러그인은 64비트 에디터
에서는 작동하지 않습니다.
두가지 버전을 모두 갖고 있다면 각각 다른폴더에 넣고
임포트 세팅을 할때 적절히 선택하면 됩니다. 32bit
버전 플러그인을 64bit에디터에서 사용하려면 별도의
인스톨러를 사용해야 합니다.
3. Native Auidio Plugin은 접두어로 대소문자
상관 없이 audioplugin이 붙어있다면 자동
으로 스캔돼서 오디오 믹서를 통해 사용 할 수
있게 되었습니다.
27. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Physics.html
Physics Update
1. PhysX2.8.3 버전에서 PhysX3.3으로 업그레이드를 했다고 합니다.
그래서 Unity4버전과 100% 호환되지 않는 점이 생겼습니다. 셀프 수정거리가 있을겁니다.
2. Adaptive force 기능을 켜고 끌 수 있게 되었습니다.
Default는 off라고 합니다. (Edit – Project Setting – Physics)
3. Static collider 이동에 대한 비용을 줄였습니다.
Dynamic collider와 데이터 구조가 같아져서 전보다 메모리를 덜 차지 하지는 않지만 이동해도 큰 부하가 걸
리지 않습니다.
4. Continuous Collision Detection 성능이 개선되었습니다.
RigidBody 스크립트에서 상황에 따라 맞게 적용하면 됩니다.
5. Mesh Collider 스케일링 비용을 줄였습니다.
PhysX3 덕분에 실시간 스케일링이라도 비용이 없다고 합니다.
28. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Physics.html
Physics Update
6. 새로운 Cloth 컴포넌트가 생겼습니다.
메인 물리 업데이트 로직과는 분리되어 있지만,
그대신 더 빠르고 멀티스레드가 가능하고 안정
적이게 되었습니다. 특정 콜라이더를 등록하면
Cloth의 물리에 영향을 받습니다.
찢어짐 효과가 더 이상 지원되지 않고 천에
압력을 적용할수 없습니다 또 천에 콜라이더를
추가하거나 천의 scene안의 강체들에게 힘
을 적용할 수 없습니다.
29. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Physics.html
Physics Update
7. 새로운 Vehicle 컴포넌트가 생겼습니
다.
Wheel Collider 컴포넌트가 좀더 현실적인
물리가 가능하게 되었습니다.
31. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Physics.html
Physics Update
8. Smooth sphere collision속성이 terrain과 mesh에서 모두 사라집니다.
9. Spring범위가 넓어졌습니다.
10. Terrain physics setting이 바뀌었습니다.
TerrainCollider.shadermaterial과 TerrainCollider.material을 사용하세요.
11. Collider가 두개 붙어있다면 이제는 한번만 체크합니다.
12. Convex모양에서만 trigger를 사용할 수 있습니다.
MeshCollider는 covex일 경우에만 isTrigger가 지원되고, TerrainCollider는 isTrigger 플래그를 지원
하지 않습니다.
13. Kinematic이 적용되지 않는 물체는 더 이상 convex collider를 사용 할 수 없습니다.
32. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Physics.html
Physics Update
14. Ragdoll 설정이 많이 바뀌었습니다.
Angular Y Limit과 Angular Z Limit의 각도가 최소한 5~15도를 유지해야 합니다. 0~5 사이의 각도를
사용하려면 0도를 사용하세요.
Enable Preprocessing을 false로 설정하세요. Blow up을 방지 할 수 있습니다.
Ragdoll의 안정성을 위해서 ConfigurableJoint.projectionMode 또는
CharacterJoint.enableProjection을 사용해 projection을 활성화 해주세요.
Joint의 지연이 생긴다면 Solver Iteration Count을 10~20으로 올려주세요. (Edit -> Project
Setting -> Physics)
Kinematic 바디에 대해서 transform으로 접근하지 마세요. Solver가 안좋은 결과를 만들어낼 수 있습니다.
MovePosition, MoveRotation, Move를 사용해주세요.
33. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Shaders.html
Shader Update
1. 조명강도 x2를 적용하면 안됩니다.
자동으로 해준다고 합니다. 다만 애니메이션에는 영향을 주지 않기 때문에 조명 강도를 애니메이션 했다면 셀프
로 하셔야합니다.
커스텀 쉐이더의 경우에는 *2를 직접 제거하셔야 합니다.
2. Built-in lighting pipeline은 몇몇 경우에서 texture coordinate 또는 ALU
instruction제한에 걸릴 수 있습니다. 이럴경우에는 #pragma target 3.0을 추가하세
요 (참조링크 : http://docs.unity3d.com/Manual/SL-ShaderPrograms.html)
3. Non-Uniform mesh를 사용하기 위해서는 버텍스 셰이더에서 노멀과 탄젠트 벡터를 정규
화 해야 합니다.
4. WindowPhone8과 콘솔에서 안개를 사용 할 수 있게 되었습니다.
직접 작성한 쉐이더에서 안개가 필요하다면 #pragma multi_compile_fog와 안개 관련 매크로들을 추가
해야 합니다. 내장 코드를 참조하라고 합니다.
34. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Shaders.html
Shader Update
5. 불투명 surface shader는 알파체널값으로 1.0(“White”)를 출력합니다.
원치 않는다면 #prgma surface 라인에서 “keepalpha”옵션을 사용하세요.
6. Forward renderloop에서 material index로 정렬하지 않습니다.
오브젝트들이 서로 상관없이 렌더링 되기 때문에 성능이 향상됩니다.
7. 고정함수(fixed function) 쉐이더에서 지원하던 기능 몇 개가 없어졌습니다.
Uv좌표설정(TexGen), uv변환행렬, SetTexture combiner mode 제거
이전버전에서 사용했다면 바꾸셔야합니다 warning이 떠요.
고정함수 쉐이더에 이점이 없기 때문에 뺐다고 합니다.
8. Forward rendering시 index순서대로 그리지 않게 돼 속도가 더욱 빨라졌습니다.
9. Programmerble과 fixed function shader 혼용이 불가능합니다.
35. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Shaders.html
Shader Update
10. D3D9 쉐이더 컴파일러는 CG2.2에서 HLSL로 바뀌었습니다.
Output 변수를 UNITY_INITIALIZE_OUTPUT매크로를 사용해서 완전히 초기화 시켜야 합니다. 또한
float2(4요소값.xyz) 형식으로 바꿔야 합니다.
float3 norm = mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal * unity_Scale.w); ->
float3 norm = normalize(mul ((float3x3)UNITY_MATRIX_IT_MV, v.normal));
11. Unity_Scale shader 속성이 없어졌습니다.
이전버전이 메모리 오버헤드를 불러일으켰다고 없애버리고 모든 행렬을 shader로 넘기면서 이제는 GPU에서 수
행됩니다. 때문에 어떤 경우에는 더 비용이 발생 할 수 있습니다.
temp.xyzw = v.vertex.xzxz * unity_Scale.xzxz * _WaveScale4 + _WaveOffset ->
float4 wpos = mul (_Object2World, v.vertex);
temp.xyzw = wpos.xzxz * _WaveScale4 + _WaveOffset;
36. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Shaders.html
Shader Update
12. Forward rendering 된 directional 그림자는 이제 shadow collection패스로 분리되
지 않습니다.
카메라의 depth texture 에 의해 deferred lighting처럼 계산됩니다.
그러니깐 모두 LightMode=ShadowCollector는 지워주세요. 셀프로
Depth texture는 더 이상 shader replacement 에서 그려지지 않습니다
이제는 shadowCaster shader passes에서 그려집니다.
Camera-DepthTexture.shader는 이제 아무일도 하지 않게 되었습니다.
Shadow shader는 back culling을 더 이상 하지 않습니다.
37. 2 버전업 되면서 다른 점
Splash Image Update
iphone
android
38. 2 버전업 되면서 다른 점
http://docs.unity3d.com/Manual/UpgradeGuide5-Misc.html
그 외...
Other script API changes
that cannot be upgraded
automatically. 이라고 합니다….
39. 3
먼저
개인적인 의견이 들어가 있으며 제 컴퓨
터에서만 그랬을 수도 있습니다.
개개인의 컴퓨터 사양에 따라 상태에
따라 다른 버그가 나타날 수도 제가 언급
한 버그가 나타나지 않을 수도 있습니다.
몇몇 버그는 진짜야… 인터넷에서 주워옴…
사용하면서 발견한 버그들..
40. 사용하면서 발견한 버그들..
UnityVS 연동 문제
Import package 안에 있었는데 이게
없어짐…
그래서 억지로 unitypackage를 찾아서
import 해줘야 함.
요 녀석 있는 위치에 가서 unitypackage
를 검색하면 바로 나옴
클릭해서 셀프 import
3
41. 사용하면서 발견한 버그들..
Light probes 밝기 버그?
Unity5 이전버전 Unity5
Surface shader는 무리없이 구동되지만 4.x버전보다는 밝아지는 버그가 있다고 합니다.
유니티측에서도 문제를 인지하고 있다고 하니 좀 더 지켜봐야 할 것 같습니다.
3
42. 사용하면서 발견한 버그들..
Light probes 밝기 버그?
편법으로 light map snap shot을 덮어 쓰는 방식으로 해결하신 분도 있다고 합니다.
Light probe 밝기 기준으로 light map을 한번 굽고 light snap shot 파일을 따로 복사
해두었다가, static 배경 밝기 기준으로 light map을 최종적으로 구워준 뒤 미리 복사해 둔
light map snap shot 파일로 대체하는 방법이라고 합니다.
귀찮네요... Unity에서 바꿔주길 기대해봅니다...
Light 버그?
Light probe와 별개로 lightmap texture가 날아가는 현상이 가끔 나타난다고 합니다.
3
43. 사용하면서 발견한 버그들..
ios 빌드시 프레임 떨어짐
안드로이드는 별 말이 없네요... ios는 unity5로 업데이트시 프레임이 많이 떨어진다고 합니다.
왠지는 저도...
UI Text 깨짐 문제
UI Text를 사용하다보면 가끔 텍스트가 제대로 나오지 않고 깨지는 경우가 있는데 play하면 제
대로 나오거나 아니면 다시 텍스트를 작성하거나 크기를 조절하면 해결됨...
3
44. 4 후기
생각보다는 버그가 별로 없는 편안한 예쁜 툴
이라고 생각합니다.
아직 5.0.0버전이라 버그픽스도 한 개도 안됐구요.
더 나아질 테니 다들 유니티 파주세요…
제가 좀 자료 좀 참고하게요…
아 UGUI도 엄청 편해요 NGUI보다.
근데 자료가 별로 없어서 고민이네요.
여러분 유니티 하세요 두 번하세요.
전체적으로 모던해지고 예뻐졌어요…