[Unity][Editor] แก้ไขค่าของตัวแปรในหลาย Object by

31
Dec
0

เคยไหม เวลาที่อยากแก้ไขค่าของตัวแปรไหนซักตัว แต่ Unity ดันไม่ยอมให้แก้ใน Multi-object mode ดังรูป
1

วันนี้เรามีวีธีแก้ไขมานำเสนอ โดยการใช้ Editor นี่คือตัวอย่าง code

[MenuItem ("LevelUp/Spine/Set Scale to 1", false, 151)]
static void SetScaleTo1 ()
{
Object[] aObj = Selection.objects;
foreach (Object obj in aObj) {
((SkeletonDataAsset)obj).scale = 1;
}
}

เวลาใช้ก็ให้เราเลือก object ทั้งหมดที่อยากแก้ไขค่าแล้วกดใช้งาน code ใน Editor จบบบ
2

[database][tips] แก้ไขโครงสร้าง หรือ backup ตารางขนาดยักษ์ยังไงให้ ตารางไม่ถูกล๊อค by

30
Nov
0

ถ้าเราใช้ mysql ธรรมดาๆคงไม่สามารถทำได้ ดังนั่นเราเลยต้องใช้ตัวช่วยกันหน่อยนั่นก็คือPercona นั่นเองครับ

วิธีใช้ก็ง่ายแสนง่าย ถ้า ปกติเราใช้คำสั่ง

ALTER TABLE table_name ADD column_name datatype

ก็ใช้ Percona แบบนี้

pt-online-schema-change --dry-run --alter "ADD column_name datatype" D=DATABASE,t=TABLE

จุดสังเกตุคือ เอา command ออกมานอก ” และ เอาชื่อ database กับ ชื่อตาราง มาใส่เป็น parameter ข้างหลัง โดยที่คำสั่ง dry-run นั้น คือคำสั่งที่ให้ทดลอง run ดูก่อนว่า syntax เราผิดรึเปล่า ถ้าไม่มีปัญหาอะไร ถ้าคำสั่งที่เราจะสั่งมีปัญหาอะไรมันจะพ่นมาบอก โดยที่ยังไม่เกิดผลลัพท์อะไรทั้งนั้น ทีนี้พอเรา run ด้วยคำสั่ง dry-run โดยที่ไม่มี error อะไรแล้ว ก็ให้แก้ dry-run ให้เป็น execute แบบนี้

pt-online-schema-change --execute --alter "ADD column_name datatype" D=DATABASE,t=TABLE

Credit

วิธีเริ่มต้น 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 ยังทำอะไรๆได้อีกมาก ถ้าใครอยากรู้มากกว่านี้ไปศึกษาดูได้ ที่นี่ ครับ