//======================================== // Use this for initialization void Start() { OnConnectCall = OnConnectCallFunc; j = MsgInit(); if (j != 0) { return; } Debug.Log("=====msgmanager--=-==-"); ///注册连接成功消息 RegMsg(16, OnConnectCall); RegMsg(255, OnConnectCall); RegMsg(141, OnConnectCall); Debug.Log("=====msgmanager-1-=-==-"); int ret = Connect("192.168.1.108", 61000, "", 0); i = ret; return; }
public static void Main(string[] args) { int c = Add(1, 2); Console.WriteLine(c); //调用c中的WriteString WriteString("hello"); var ptr = ReturnString(); Console.WriteLine(Marshal.PtrToStringAnsi(ptr)); ReleaseMemory(ptr); // 调用C中的AddInt方法 int i = 10; AddInt(ref i); Console.WriteLine(i); //调用C++中的AddIntArray方法将C#中的数据传递到C++中,并在C++中输出 int[] CSArray = new int[10]; for (int iArr = 0; iArr < 10; iArr++) { CSArray[iArr] = iArr; } AddIntArray(CSArray, CSArray.Length); //调用C++中的GetArrayFromCPP方法获取一个C中建立的数组 IntPtr pArrayPointer = GetArrayFromCPP(); int[] result = new int[10]; Marshal.Copy(pArrayPointer, result, 0, 10); for (int iArr = 0; iArr < 10; iArr++) { Console.Write(result[iArr]); } Console.WriteLine(); //释放内存 ReleaseMemory(pArrayPointer); //让委托指向将被回调的方法 callback = CSCallbackFunction; //将委托传递给C++ SetCallback(callback); //建立一个Vector3的实例 Vector3 vector = new Vector3() { x = 10, y = 20, z = 30 }; //将vector传递给C++并在C++中输出 Vector3 v = SendStructFromCSToCPP(vector); Console.WriteLine("({0}, {1}, {2})", v.x, v.y, v.z); }
/// <summary> /// 批量设置dll的回调函数 /// </summary> private void SetCallBack() { //委托指向 callback_DEBUG = CSCallbackFunction_DEBUG; callback = CSCallbackFunction; callupdateback = GetUpdateDate; SetCallback_DEBUG(callback_DEBUG); SetCallback(callback); SetUpdateCallback(callupdateback); }
void Start() { callback = CSCallbackFunction; //调用方法中相加函数 //i = addInt (1,111); //f = addFloat (100f,2.2f); i = 100; f = 111; i = Connect("127.0.0.1", (int)61010, "", 0); i = RegMsg(3, callback); }
//======================================== // Use this for initialization void Start() { socketindex = -1; Debug.Log(string.Format("======Start==={0}", socketindex)); m_InteractionMgr = null; m_GameCtr = null; m_myPlayer = CPlayer.Instance(); m_GameTable = CTable.Instance(); OnConnectCall = OnConnectCallFunc; j = MsgInit(); if (j != 0) { return; } Debug.Log("=====msgmanager--=-==-"); ///注册消息,iso注意此消息 foreach (msg_id item in Enum.GetValues(typeof(msg_id))) { RegMsg((int)item, OnConnectCall); } ///注册连接成功消息 //RegMsg((int)msg_id.ID_CONNECTION_REQUEST_ACCEPTED, OnConnectCall); //RegMsg((int)msg_id.PT_USER_INGAME_MSG, OnConnectCall); //RegMsg(141, OnConnectCall); Debug.Log("=====msgmanager-1-=-==-"); int ret = Connect("192.168.1.110", 61000, "", 0); // int ret = Connect("35.196.108.73", 61000, "", 0); // int ret = Connect("192.168.247.251", 61000, "", 0); i = ret; return; }
void Init() { callback = GetComponent <CSCallback>(); if (GameObject.Find("CharacterSelectorRoot") == null) { root = new GameObject(); root.name = "CharacterSelectorRoot"; root.transform.parent = Camera.main.transform; } materials = new Material[characters.Length]; int index = 0; foreach (Character _char in characters) { _char.obj.SetActive(true); _char.obj.transform.parent = root.transform; _char.obj.transform.localPosition = new Vector3(index * xOffset, 0, 0); _char.obj.transform.localScale = startObjectScale; materials[index] = _char.obj.GetComponent <Renderer>().material; if (_char.opened == false) { _char.obj.GetComponent <Renderer>().material = closeMaterial; } index++; } root.SetActive(false); priceText = buyUIButton.GetComponentInChildren <Text>(); if (callback) { callback.OnInit(); } }
public static extern void SetCallback(CSCallback callback);
public static extern void setCallBack(CSCallback callback);
public Form1() { InitializeComponent(); callback = CSCallbackFunction; }
extern static int RegMsg(int msgid, CSCallback callback);
private static extern void showUnity3dCamera(IntPtr data, int width, int height, int stride, CSCallback cs);
void Start() { callback = CSCallbackFuction; }
static void Main() { int c = Add(1, 2); Console.WriteLine(c); /** * unsafe需要在你项目右键 属性中设置 允许不安全代码 */ unsafe { //在传递字符串时,将字符串所在的内存固化 //并取出字符串数组的指针 /** * fixed 语句禁止垃圾回收器重定位可移动的变量。 * fixed 语句只能出现在不安全的上下文中。Fixed 还可用于创建固定大小的缓冲区。 */ fixed(char *p = &("helo".ToCharArray()[0])) { WriteString(p); } //调用C++的AddInt 方法 int i = 10; AddInt(&i); Console.WriteLine(i); //调用C++中的AddIntArray方法将C#中的数据传递到C++中,并在C++中输出 int[] CSArray = new int[10]; for (int iArr = 0; iArr < 10; iArr++) { CSArray[iArr] = iArr; } fixed(int *pCSArray = &CSArray[0]) { AddIntArray(pCSArray, 10); } //调用C++中的GetArrayFromCPP方法获取一个C++中建立的数组 int *pArrayPointer = null; pArrayPointer = GetArrayFromCPP(); for (int iarr = 0; iarr < 10; iarr++) { Console.WriteLine(*pArrayPointer); pArrayPointer++; } } //在CS的主程序中让callback指向CSCallbackFunction方法,代码如下所示: //调用委托所指向的方法 callback = CSCallbackFunction; //将委托传递给C++ SetCallback方法被执行后,在C#中定义的CSCallbackFunction就会被C++所调用。 SetCallback(callback); //建立一个Vector3的实例 Vector3 vector = new Vector3() { X = 10, Y = 20, Z = 30 }; SendStructFromCSToCPP(vector); Console.Read(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); }
extern static void SetCallback(CSCallback callback);