zoukankan      html  css  js  c++  java
  • JSBinding + SharpKit / Important Notes

    Serialization of List<T> is not supported.

    复制代码
     1 public int v; // SUPPORTED
     2 public GameObject go; // SUPPORTED
     3 public Transform trans; // SUPPORTED
     4 public int[] arrInt; // SUPPORTED
     5 public Vector3 v; // SUPPORTED
     6 [Serializable]
     7 public struct HandsomeGuyInfo {
     8     public int jjLength;
     9     public Vector3 jjDirection;
    10     public string[] girlFriendNames;
    11 };
    12 public HandsomeGuyInfo[] infos; // SUPPORTED
    13 public List<int> lst; // NOT SUPPORTED, Use int[] instead
    复制代码

     

    About menu: Assets | JSB | Add SharpKit JsType Attribute for all Structs and Classes

    If you execute this menu more than once, only one JsType will be added. this is good.

     1 using UnityEngine;
     2  using System.Collections;
     3  
     4  using SharpKit.JavaScript;
     5 
     6  [JsType(JsMode.Clr,"../../StreamingAssets/JavaScript/SharpKitGenerated/2DPlatformer/Scripts/Gun.javascript")]
     7  public class Gun : MonoBehaviour
     8  {
     9     public GameObject rocketGO;                // Prefab of the rocket.
    10     public float speed = 20f;                // The speed the rocket will fire at.
    11 
    12     //........
    13 }

     

    InvokeRepeating is supported

    Coroutine is supported.

    read JSBinding + SharpKit / Supporting Coroutine for more information.

     

    DON'T use 'as' operator.

    Check the JavaScript generated, you will know why. It will cause additional cost.

    1 UnityEngine.Object obj = ...;
    2  
    3 GameObject go = obj as GameObject; // DON'T do this
    4 GameObject go = (GameObject)obj; // GREAT

     

    Array is now treated as 'input' (readonly) when calling C# function from JavaScript.

     1 // C#
     2 void ModifyArray(int[] arr)
     3 {
     4     for (var i = 0; i < arr.Length; i++)
     5         arr[i] = i;
     6 }
     7 
     8 // JS
     9 var arr = [5,2,3,2];
    10 ModifyArray(arr); // call C# function
    11 
    12 //
    13 // arr is still [5,2,3,2] !!
    14 //

     

    Only 1 demension array is supported (JS <-> CS).

    int[] arr; // OK
    int[,] arr; // NO

     

    Debug.Log(): Explicitly call ToString() for string parameter.

    Vector3 v = Vector3.one;
    Debug.Log("v is " + v); // NO
    Debug.Log("v is " + v.ToString()); // GOOD!

     

    Generic Type including another Generic Type is not supported.

    For example,

    Dictionary<string, List<int>> dict; // NOT SUPPORTED
    // But you can use this:
    Dictionary<string, object> dict; // OK

     

    DON'T use Reflection!

    There is no type information in JavaScript, most functions of reflection are not available in JavaScript.

     

    Unsafe code is not supported!

    For example, char*, SharpKit doesn't support it.

     

    Better not operate binary data in JavaScript.

    For example, int[], byte[]. Operating binary data in JavaScript will have very very low performance, and get many bugs!

    As an alternative, you can wrap these operations in C#, and expose interfaces to JavaScript.

     

    Limited supported to 'SendMessage'

    Member functions of JSComponent (and his derived classes) are fixed. You can not add member functions to JSComponent after game release. So if you want JSComponent to receive some message,  for example, OnEnemyAttacked, you'll have to add OnEnemyAttacked to JSComponent beforehand.

    BTW, JSComponent and his derived classes support ALL predefined methods, for a full list, see Messages section in http://docs.unity3d.com/ScriptReference/MonoBehaviour.html

     

    Add as many as possible classes to JSBindingSettings.classes array

    If you want to delta-update scripts after game release, you better add as many as possible classes to JSBindingSettings.classes array.

    Because you can use classes in that array after game release!

     

     

    back to

    JSBinding + SharpKit / Home

  • 相关阅读:
    php模式设计之 工厂模式
    SDK以及部署的SDK的思路
    手机用fiddler抓包开发测试
    搭建GIT服务端
    TP5.0以上数据库增加数据异常
    lnmp一键安装后的配置改动建议
    TPshop5最新版 安装 nginx 开启PATHINFO 模式资源加载路径加载失败问题,适用tp3.2PATHINFO模式REWRITE模式
    jquery写拉动条
    JS(JQ)分页 个人查看,没注释
    ecshop 分页
  • 原文地址:https://www.cnblogs.com/answerwinner/p/4591248.html
Copyright © 2011-2022 走看看