วิธีเริ่มต้น Repo ใหม่ by

5
Oct
0
  1. สร้าง Directory ใน Hg Server
  2. เปลี่ยน owner ของ Directory ที่สร้างใหม่ให้ owner เป็น hg
    chown -R hg:hg <dirName>
  3. เข้าไปสร้างไฟล์อะไรก็ได้ใน Directory ให้เป็น .png (เพื่อ enable large file extendstion)
    nano asdf.png
    hg add --large asdf.png
  4. commit
    hg commit -m "init project"

* อย่าลืมเพิ่ม permission ใน .ssh

[UNITY][Google Play Services] ปัญหาและวีธีแก้ไขเบื้องต้น by

29
Sep
0

เมือเราจะใช้ Plugin ที่ใช้ Services ของ Google ก็อาจจะเจอปัญหาต่างๆได้ โดยเฉพาะเมื่อเรา ใช้ Plugin หลายๆตัว ก็ยิ่งมีโอกาสเจอปัญหาเหล่านี้เยอะตามไปด้วย วันนี้จะมาเล่าถึงปัญหาที่เคยเจอและวิธีแก้ไขปัญหาเหล่านั้นกันนะครับ

  • ปัญหา: Exception: JNI: Init’d AndroidJavaClass with null ptr! เมื่อใช้ Soomla
    วิธีแก้ไข: ให้ Upgrade Soomla เป็น version ล่าสุดและต้องลง Plugin เสริมของ Soomla ให้ครบ สิ่งที่ต้องมี(อย่างน้อย)คือ
    - Core
    - Store
    - HighWay
  • ปัญหา: CommandInvokationFailure: Failed to re-package resources.  Error นี้จะตามมาด้วยข้อความต่อไปนี้ (อันไดอันหนึ่งหรือทั้งหมด)
    - Error: No resource found that matches the given name (at ‘theme’ with value ‘@style/Theme.IAPTheme’).
    - Error: No resource found that matches the given name (at ‘value’ with value ‘@integer/google_play_services_version’).
    วิธีแก้ไข: ให้ลบไฟล์ google-play-services_lib หรือ play-services-….jar  ออกให้หมดแล้วเอา play-services-reslover ไปลงใน project
  • ปัญหา: Main manifest has <uses-sdk android:minSdkVersion=’9′> but library uses minSdkVersion=’15′  ปัญหานี้เกิดจากเรา set minSdkVersion ไว้ไม่ตรงกับที่ Plugin ต้องการ
    วิธีแก้ไข: ใน Player Settings > Other Settings > Minimum API Level ให้ปรับเป็น Android 4.0.3 (API Level 15)

[UNITY] [Editor] เทคนิคการเขียน Editor ภาค 3 by

2
Sep
0

[UNITY] [Editor] เทคนิคการเขียน Editor ภาค 3

จากคราวที่แล้ว เรื่อง Validate Function ของ MenuItem วันนี้เราจะมาสอนเรื่อง Hot Key ครับ

รู้หมือไร่?? เราสามารถกำหนด Hot Key ให้ MenuItem ของเราได้ เพื่อที่จะได้เรียกใช้ได้ง่ายๆครับ วิธีใช้ก็ดังนี้เลยครับ

[MenuItem("Test/Menu1", false, 1)]
static void Menu1() { }
[MenuItem("Test/Menu2", false, 1)]
static void Menu2() { }
[MenuItem("Test/Menu3", false, 51)]
static void Menu3() { }
[MenuItem("Test/Menu4", false, 101)]
static void Menu4()
{
Selection.activeGameObject.name = "Test";
}
[MenuItem("Test/Menu4", true, 101)]
static bool Menu4Validator()
{
return Selection.activeGameObject != null;
}

นี่คือ code ของคราวที่แล้ว แล้วถ้าเราอยากให้ Menu4 นั้นมี Hot Key ก็ให้แก้พารามิเตอร์ตัวแรก ของ MenuItem
ซึ่งมี supported keys อยู่ดังนี้ครับ

% – CTRL on Windows / CMD on OSX
# – Shift
& – Alt
LEFT/RIGHT/UP/DOWN – Arrow keys
F1…F2 – F keys
HOME, END, PGUP, PGDN

เมื่อเราจะใส่ก็ใช้ประมาณนี้นะครับ

[MenuItem("Test/Menu4 %x", false, 101)]
static void Menu4()
{
Selection.activeGameObject.name = "Test";
}
[MenuItem("Test/Menu4 %x", true, 101)]
static bool Menu4Validator()
{
return Selection.activeGameObject != null;
}

จะได้ผลลัพท์ดังรูป
1

สังเกตุ1: จะต้อง เว้นวรรคก่อนใส่สัญลักษณ์ Hot Key เสมอนะครับ
สังเกตุ2: ถ้ามี Validate Function จะต้องแก้พารามิเตอร์ตัวแรกให้เหมือนกันนะครับ

เราสามารถใส่ %#&x เพื่อแทน Hot Key Ctrl+Alt+Shift+x ได้ครับ

ก็จบกันไปแล้วนะครับสำหรับการแนะนำ Feature ต่างๆของ UnityEditor ครับ
แต่จริงๆแล้ว UnityEditor ยังทำอะไรๆได้อีกมาก ถ้าใครอยากรู้มากกว่านี้ไปศึกษาดูได้ ที่นี่ ครับ

[UNITY] [Editor] เทคนิคการเขียน Editor ภาค 2 by

31
Jul
0

จากคราวที่แล้ว เรื่อง priority ของ MenuItem วันนี้เราจะมาสอนเรื่อง Validate Function
ของ MenuItem กันนะครับ

รู้หมือไร่?? MenuItem นั้นสามารถ Disable Menu หรือ Enable Menu ตามเงื่อนไขต่างๆ
ที่เรากำหนดไว้ใน Validate Function ของแต่ละ Item นั่นเอง วิธีใช้ก็ดังนี้เลยครับ


[MenuItem("Test/Menu1", false, 1)]
static void Menu1() { }
[MenuItem("Test/Menu2", false, 1)]
static void Menu2() { }
[MenuItem("Test/Menu3", false, 51)]
static void Menu3() { }
[MenuItem("Test/Menu4", false, 101)]
static void Menu4() { }

นี่คือ code ของคราวที่แล้ว แล้วถ้าเราอยากให้ Menu4 นั่น Enable ก็ต่อเมื่อเราเลือก GameObject
ไว้ (การเลือกนี้จะถือเอา Object ที่แสดงอยู่ใน Inspector ในขณะนั้น) ก็ให้เราเพิ่ม code นี้ลงไป

[MenuItem("Test/Menu4", true, 101)]
static bool Menu4Validator()
{
return Selection.activeGameObject != null;
}

จะได้ผลลัพท์ดังรูป
1

จากนั้นจะเอา GameObject นั้นไปใช้ยังไงก็ต้มยำทำแกงได้ตามสบายเลยครับ ยกตัวอย่างเช่น
แก้ Function Menu4 ให้เป็นแบบนี้

[MenuItem("Test/Menu4", false, 101)]
static void Menu4()
{
Selection.activeGameObject.name = "Test";
}

ถ้าเราเลือก GameObject ไว้ แล้วกดที่ Menu4 GameObject นั้นก็จะถูกเปลี่ยนชื่อให้เป็น Test ในบัดดล
2

ไว้คราวหน้าจะมาสอน trick เด็ดๆเกี่ยวกับ Editor อีกนะคร้าฟฟฟฟฟ

[UNITY] [Editor] เทคนิคการเขียน Editor ภาค 1 by

30
Jun
0

หลังจากใช้ UNITY กันมาซักพักแล้ว วันนี้เรามาเรียนรู้เรื่องที่ทำให้ชีวิต ง๊ายง่าย กันมากขึ้นดีกว่า
นั่นก็คือ การเขียน Editor นั่นเอง แต่เราไม่ได้จะมาเรียนการเขียน Editor กากๆ พื้นๆนะ
เราจะมาเรียนเรื่องที่มันลึกขึ้นอีกนิด เทพขึ้นอีกหน่อย ให้ชีวิต ดี๊ดี ขึ้นอีกเยอะๆกันดีกว่า

เรื่องแรกเลยก็คือ เรื่องของเส้นคั่น ในตัวเลือกต่างๆของ Editor เคยสงสัยกันไหมว่า เอะทำยังไง
ให้มันมีเส้นคั่นโผล่ออกมา แล้วมีหลายเส้นได้ไหม แล้วมีกฏการเขียนยังไงให้มันมีเส้นคั่นขึ้นมา คืออย่างงี้ครับ
คำตอบก็คือ คำสั่ง MenuItem() เนี่ยมันมี พารามิเตอร์ ที่ชื่อว่า priority อยู่ครับ และมันก็มีกฏเล็กๆน้อย
สำหรับ พารามิเตอร์ ตัวนี้นั่นก็คือ มันจะเรียงลำดับ Item ใน Menu จาก priority น้อยไปหามาก
และแบ่งกลุ่มให้หากมี Item ที่มี priority เดียวกัน และจะสร้างเส้นคั่นให้ ทุกๆ 50 priority ครับ
อ่านแล้ว งงๆ กันใช่ไหมครับ มาดูตัวอย่างกันดีกว่า

[MenuItem("Test/Menu1", false, 1)]
static void Menu1(){}
[MenuItem("Test/Menu2", false, 1)]
static void Menu2(){}
[MenuItem("Test/Menu3", false, 51)]
static void Menu3(){}

จะได้ผลลัพท์ดังรูป

1

และหากเราเพิ่ม code นี้ลงไปท้าย code เดิม

[MenuItem("Test/Menu4", false, 101)]
static void Menu4() { }

จะได้ผลลัพท์ดังรูป

2

เป็นยังไงบ้างครับสำหรับ trick เล็กๆน้อยๆ ของการเขียน Editor ไว้คราวหน้าจะมี trick อื่นๆมาฝากอีกครับ

 เราชนะรอบ 4 | ยืมเงิน 3000 ด่วน | แอพกู้เงิน | แอพเงินด่วน | สินเชื่อออนไลน์อนุมัติทันที | Site Map | กู้เงินก้อน | กระเป๋าตัง | thisshop และ ยืมเงินฉุกเฉิน 5000 ด่วน