怎么用vs编辑unity不能引用usingunity system.typeData.SqlClient

用户代码未处理 System.Data.SqlClient.SqlException
无解了 怎么破??~~
[问题点数:0分,结帖人mimimhmh]
用户代码未处理 System.Data.SqlClient.SqlException
无解了 怎么破??~~
[问题点数:0分,结帖人mimimhmh]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
本帖子已过去太久远了,不再提供回复功能。电脑教程_计算机子分类unity3d热更新插件uLua学习整理
IOS不能热更新,不是因为不能用反射,是因为
System.Reflection.Assembly.Load 无法使用
System.Reflection.Emit 无法使用
piler 无法使用
这三个不能用,就把传统dotnet动态路径坑死了
为啥“这三个不能用,就把传统dotnet动态路径坑死了”呢
动态载入dll或者cs的方法就这几个, IOS 下不能动态载入dll或者cs
文件,已经编译进去的没事。
=========================================================
尽量只把U3D当一个渲染引擎来看待, 不然你会发现热更资源很悲剧, 资源一定要与逻辑分开, 因为U3D用的是类的序列化,
后期改动会导致前面导出的资源不能用。就和开发AS3游戏差不多了。可以这么理解
1.prefab尽量不去绑定脚本,尽量在代码里AddComponent&接口实现脚本&,在实例prefab的GetComponent&接口脚本&.接口操作。
2.prefab可以绑定那些不会再改动的脚本。
============================================================
插件下载地址:
http://ulua.org/
​toLua下载地址:
/topameng/CsToLua
阿萌对ULUA1.03的BUG修改文章:
http://user./5281069/blog/?ptlang=2052&ADUIN=&ADSESSION=&ADTAG=CLIENT.QQ.5396_.0&ADPUBNO=26442
​蛮牛上找的关于ULUA的文章:
Unity中使用ulua的个人经验总结
/blog-.html?_dsign=0c1fb317
==============写LUA相关的工具​==============
BabeLua-vs2012-and-vs2013插件:
设置参考/bbs/read.php?tid=205043
使用技巧http://blog.csdn.net/babestudio
LuaStudio,请使用Administrator管理员权限,否则会挂死!!!​
==============uLua插件导入到unity3d常见问题​==============​
导入uLua插件运行自带的例子报错问题:DllNotFoundException:
这个在其老外写的README里已经说了如何解决。
(1)将plugins目录放到最外面,重启unity。
(2)真机没有打包libulua.so进包导致,或者模拟器也有些设置不对。打包的时候把libulua.so打包进libs\armeabi-v7a
EntryPointNotFoundException:&解决方案:
EntryPointNotFoundException:这个类型错误不太单一,可选择下面2中方法解决:(方案1)把除了Assets跟
ProjectSettings目录之外的都删除掉,重新打开工程。(方案2)如果在MAC上,选择IOS平台,很容易出现,切换到MAC/PC平台基本
上就解决了,你不能要求在MAC下一定要运行IOS的动态库。
0.16框架报错解决办法:
0.16框架基于u3d4.6,所以在老版本的u3d打开会报错,如果是老版本的话把LuaWrap除了Base目录外所有的Wrap
cs文件删掉,然后lua clear菜单调用下就好了。
​attempt&to&index&global&'UnityEngine':
uaScriptException: [string "define.lua"]:1: attempt to index
global 'UnityEngine' (a nil value)解决:生成wrap文件。
tolua&c#简单使用方法:
打开Editor/BindLua.cs文件,在static BindType[] binds = new
BindType[]变量末尾一行加入要导入的cs类,比如Resources类,保存等u3d编译完后,选择“Lua/Gen
LuaBinding Files”编译即可,以后就可以在lua里面使用此类了,而不要导入进来。映射public成员
​C#里面有个编辑器工具类可以用Wrap映射到lua里使用
public static class LuaBinder {
&&& public
static void Bind(IntPtr L) {
ObjectWrap.Register(L);
这个等价于我们之前在lua中写的
luanet.import_type("UnityEngine.Object")
lua脚本里在定义基础类型的时候
Object = luanet.import_type("UnityEngine.Object")
Object = UnityEngine.Object
这两种写法有区别吗,还是随便写哪个都行?
用后者 效率高。前者是反射
_lua_tocbuff 是阿萌自己添加的,用于xml
_luaopen_ffi 是luajit的,
_luaopen_luaXML
删掉函数声明即可
lua的loop库可以正常用在ulua里吗
看库是否用到了c++代码了
自己直接拿lua5.1源码编的ulua.dll
Windows下用可以用vs编吧,我把那个lua_wrap.c也添加了
如果你的错误是找不到入口,就加这个宏,LUA_BUILD_AS_DLL,具体查一下readme。
加上这个_GT(typeof(JsonObject)), 点击GEN LUA
WRAPPER后unity直接就崩溃了
记得嵌套2层以上的模板就不行了,如 Dictionary&
最后发布程序的时候,会包很多错,是由于TOLUA无法识别代码中加了编辑器运行的条件编译判断,所以手动注释掉与这相关的代码不报错就好,就能正常编译打包程序了。
如何在LUA中遍历CSharp的数组:
LuaTable&mM
&&&&Dictionary&mLuaM
&&&&public&LuaTable&Map&{
&&&&&&&&get&{
&&&&&&&&&&&&if&(mMap&==&null)&{
&&&&&&&&&&&&&&&&mLuaMap&=&new&Dictionary(&);
&&&&&&&&&&&&&&&&mMap&=&TTLuaMain.Instance.luaState.NewTable(&);
&&&&&&&&&&&&&&&&for&(int&i&=&0,&iMax&=&mVariables.L&i&&&iM&i++)&{
&&&&&&&&&&&&&&&&&&&&var&val&=&mVariables[i];
&&&&&&&&&&&&&&&&&&&&mMap[val.name]&=&val.
&&&&&&&&&&&&&&&&&&&&mLuaMap.Add(val.name,&val);
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&}
&&&&&&&&&&&&return&mM
LuaVariable&是我自定义的类型,你可以随便传,&这个是指我在C#里写的数组类型
核心思想就是把你C#数组里面的东西,放入table,如果是单纯的数据类型,你可以直接lua里面for&0,maxlength&&如果是字典类型的,你就要转换
比如我这里:
通过TOLUA,把Collider2d类型注册给ULUA,直接lua里面for&0,maxlength&遍历。
再贴上ULUA群主写的范例:
在lua里怎么遍历 C#的object数组:
通过 IEnumerator:
uLua自带的案例
日 15:58:22 补充说明,升级到U3D5.0.0F4,U3D
API改了很多,都得用getcomponent函数,以前直接THIS.transform已经不能用了,所以自带的小案例会报错。
02_CreateGameObject​:
这里我先写个最平常不过的U3D下的C#脚本​
=======================ExtendMonoScript​.cs================
public class ExtendMonoScript : MonoBehaviour {
public void aaa ( ) {&
Debug.Log(this + "普通的函数调用!");&
&& public static void
StaticMethod ( ) {
Debug.Log("公有静态函数!!");
& private static void
PirvateStaticMethod ( )
Debug.Log("私有静态函数!!");
public& void ObjMethod ( )
Debug.Log("公有成员函数!!");
private void PrivateObjMethod ( )
Debug.Log("私有成员函数!!");&
=======================ExtendMonoScript​.cs================
=======================CreateGameObject.cs===============
using UnityE
using System.C
using LuaI
public class CreateGameObject : MonoBehaviour {
&&& private
string script = @"
&&&&&&&&&&&
luanet.load_assembly('UnityEngine')
&&&&&&&&&&&
GameObject = luanet.import_type('UnityEngine.GameObject')
&&&&&&&&&&&
luanet.load_assembly('Assembly-CSharp')
&&&&&&&&&&&
local newGameObj = GameObject('Creat_GameObj_In_Lua')
&&&&&&&&&&&
newGameObj:AddComponent('ExtendMonoScript')
&&& void Start
LuaState l = new LuaState();
l.DoString(script);
=======================CreateGameObject.cs===============
load_assembly加载程序集,这样LUA才能使用其API
import_type导入类型,这样LUA才能使用改类型
newGameObj:AddComponent('ExtendMonoScript')这里注意初学LUA,“:”与“.”的区别
DoString(script);真正使用ULUA插件时不要用这个,因为效率低下。
03_AccessingLuaVariables:
========================AccessingLuaVariables.cs==========================
using UnityE
using System.C
using LuaI
public class AccessingLuaVariables : MonoBehaviour {
对象调用函数用:&&&&
load_assembly是载入程序集&&&&
import_type是引入类型
..相当于是C#里的字符串+,就是连接字符串的意思
local表示局部变量,没写都为全局变量
{}表示TABLE,lua里数组,链表等等结构都使用该方式模拟出来
table.insert表示Append,在数组最后插入一个新元素
&&& private
string script = @"
&&&&&&&&&&&
luanet.load_assembly('UnityEngine')
&&&&&&&&&&&
GameObject = luanet.import_type('UnityEngine.GameObject')
&&&&&&&&&&&
g_particles = {}
&&&&&&&&&&&
for i = 1, g_Objs2Spawn, 1 do
&&&&&&&&&&&&&&&
local newGameObj = GameObject('NewObj' .. tostring(i))
&&&&&&&&&&&&&&&
local ps = newGameObj:AddComponent('ParticleSystem')
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
table.insert(g_particles, ps)
&&&&&&&&&&&
&&&&&&&&&&&
g_var2read = 42
&&&&&&&&&&&
g_array = {}
&&&&&&&&&&&
for i = 1, 5, 1 do
&&&&&&&&&&&&&&&
table.insert(g_array, i)
&&&&&&&&&&&
&&& void Start
LuaState l = new LuaState();
// 给全局变量赋值
l["g_Objs2Spawn"] = 5;
l.DoString(script);
// 取得全局变量
print("Read from lua: " + l["g_var2read"].ToString());
// Get the lua table as LuaTable object
LuaTable particles = (LuaTable)l["g_particles"];
// Typical foreach over values in table
foreach( ParticleSystem ps in particles.Values )
&&&&&&&&&&&
ps.Play();
l["g_var2read"] = 48;
Debug.Log("Read from lua: " + l["g_var2read"].ToString( ));
// Lua里数值都是当的double,动态类型,不需要强制类型转换
//float akb =
(float)l["var2read"];&& //
//int akb = (int)l["var2read"];&&
double akb =
(double)l["g_var2read"];&& //
Debug.Log(akb);
l["g_var2read"] =
"AKB48";&&& //
Debug.Log("Read from lua,赋值字符串后: " + l["g_var2read"].ToString(
string str =
(string)l["g_var2read"];&&&&
Debug.Log("str = " + str);
LuaTable nums = (LuaTable)l["g_array"];
foreach ( double num in nums.Values ) {
&&&&&&&&&&&
Debug.Log("num = " + num);
foreach ( double key in nums.Keys ) {
&&&&&&&&&&&
Debug.Log("关键字 = " + key);
//Debug.Log("nums[1] = " +
nums["1"].ToString());&& //
========================AccessingLuaVariables.cs==========================
群共享的小框架SimpleFramework
baseLua=桥 ,继承baselua的c#类一般不需要导出wrap。
V0.2.0发布EXE调整:
首先直接发布EXE报错:
修改打包编辑器脚本:
直接简单的把打包目标改成WIN,重新打包。
载入AB的资源管理脚本:
可以看到这里对路径只写了安卓和IOS平台的判断,再就是是否是调试版的判断。改完后,按GUI的提示改下常量为DEBUG模式,以拿到路径。这样发布EXE就正常了。
=================启动SimpleFramework_v0.1.5的服务端问题======================
启动&SimpleFramework_v0.1.5的服务端这个是什么问题
&10:46:48,573&[7128]&ERROR&DefaultBootstrap&-&Failed&to&create&server&instance&ManagementServer!
System.Reflection.TargetInvocationException:&调用的目标发生了异常。&---&&System.TypeInitializationException:&“SuperSocket.ServerManager.ManagementServer”的类型初始值设定项引发异常。&---&&System.IO.FileNotFoundException:&未能加载文件或程序集“Newtonsoft.Json,&Version=4.5.0.0,&Culture=neutral,&PublicKeyToken=30ad4fe6b2a6aeed”或它的某一个依赖项。系统找不到指定的文件。&
安装。net&4,没有找到json的dll
,已经在目录里面有了,跟exe同目录
把这个,Newtonsoft.Json.dll考到&debug执行文件&同目录就可以了。
==============================================================================
TOLUA,封装C#与LUA通信原理:
&LuaDLL.lua_pushstdcallcfunction(L,&IndexArray);
&&&&&&&&LuaDLL.lua_rawset(L,&-3);
&&&&&&&&LuaDLL.lua_pushstring(L,&"__gc");
&&&&&&&&LuaDLL.lua_pushstdcallcfunction(L,&__gc);
&&&&&&&&LuaDLL.lua_rawset(L,&-3);
pushstring是把toluaindex压栈,dostring我记得是执行这段字符串,生成闭包,最后是以toluaindex为key.闭包为value存放在注册表,这样可以不被lua直接访问到,如果我记得不错的话,rawset是绕过元表直接设置table,index表示的是lua堆栈中对象的索引位置。
怎么知道index是多少呢?如这个里面的-3
-3是luanet&array,就是个栈,而且第一个-3和第二个是不一样的,理解栈,压栈,出栈就好了,前面四句就是luanetarray[_index]=函数,settop是设置栈顶,这里为0是清空栈。
最后的-3是不是倒数第3次的push。lua_pushstdcallcfunction(L,&IndexArray);&是这行的IndexArray吗?
非也,是那个元表,rawset只是把key&和value弹出而已,元表留在栈顶,实际上这次是给这个元表加一个key为_gc,value为gc函数的键值。
=====================================
me for nlua小框架:
使用步骤:
//附带地鼠资源打包教程和编辑脚本测试工程教程:
1.执行编辑器菜单 ME tools/清理缓存,让一切重新开始。
2.执行编辑器菜单 ME tools/把Atlas目录下的.png图片作为图集资源并放入Data目录。
3.在Project窗体内 鼠标点选选中 Assets/Builds/GUI,然后 执行编辑器菜单 ME
tools/独立打包选中目录下的各个对象并放入Data目录。
4.执行编辑器菜单 ME
tools/制作更新包:把Data目录压缩为一个zip包并放入StreamingAssets目录。
通过以上步骤完成资源和升级包的制作了。
如果在编辑器进行代码修改或者资源修改,请重复以上步骤。
如果仅仅修改 Assets/Data/lua 下的逻辑脚本,您只需要执行以上的1和4步骤
nlua 把plugins下面的x86和x86_64两个文件夹删除掉,就能发布android了。
me for nlua编译选项推荐使用
UNITY_3D;USE_KERALUA;LUA_CORE;CATCH_EXCEPTIONS
即使用c版lua加速,也可解决打印(Debug.Log)中文日志显示乱码问题。
参考一下ME 游戏框架,全局就一个luastate,
ME框架的思路就是 一个GameObject
对应挂个LuaBehaviour.cs脚本,这个LuaBehaviour.cs脚本DoFile一个
lua脚本,lua脚本和LuaBehaviour.cs交互控制。全局就有一个luastate,每个脚本其实就是一个table。
============================================================
U3D5的更新:
各位使用MAC + U5 64的同学,如果遇到编辑器环境下luastate == null的情况,请下载我上传群共享的
libulua.zip替换其底层库,可暂时绕过此问题,将来有时间研究下。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。急用求助unity 3d 如何连接sql server?_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:32,587贴子:
急用求助unity 3d 如何连接sql server?收藏
最近做作业时碰见的一个问题需要将游戏是=时产生的一个分数变量coins导入数据库game,部分代码如下:大神帮我看看有神马问题using UnityEusing Susing System.Dusing System.Cusing System.Data.SqlCpublic class mark : MonoBehaviour {
// Use this for initialization
void Start () {
SqlConnection sqlcon = new SqlConnection (
//&server=PC-VZMW;& +
&data source=user id=password=123456; initial catalog =game&); //name of database
SqlCommand cmd=new SqlCommand();
cmd.Connection =
mandType = mandType.T
//sql connection
mandText = & USE game GO
EXEC insertmark @mark=&;//执行存储过程insertmark
SqlDataAdapter da = new SqlDataAdapter (cmd);
da.SelectCommand.Connection.Open ();
string tempip =
da.SelectCommand.ExecuteScalar ().ToString ();
da.SelectCommand.Connection.Close ();
print (&get& + tempip);
void CollectCoin(Collider2D coinCollider)
Destroy(coinCollider.gameObject);
AudioSource.PlayClipAtPoint(coinCollectSound, transform.position);
void DisplayCoinsCount()
//游戏界面显示分数
Rect coinIconRect = new Rect(10, 10, 32, 32);
GUI.DrawTexture(coinIconRect, coinIconTexture);
GUIStyle style = new GUIStyle();
style.fontSize = 30;
style.fontStyle = FontStyle.B
style.normal.textColor = Color.
Rect labelRect = new Rect(coinIconRect.xMax, coinIconRect.y, 60, 32);
GUI.Label(labelRect, coins.ToString(), style);
// Update is called once per frame
void Update () {
在这之前,我先试了一下将一个数据从数据库里抓出来,编译没有报错,但是显示不出结果,这是为神马呢?代码如下:using UnityEusing Susing System.Cusing System.Data.SqlCpublic class NewBehaviourScript : MonoBehaviour {
// Use this for initialization
void Start () {
SqlConnection sqlcon = new SqlConnection (
//&server=PC-VZMW;& +
&data source=user id=password=123456; initial catalog =stud&); //name of database
SqlCommand cmd=new SqlCommand();
cmd.Connection =
mandType = mandType.T
//sql connection
mandText = & select* from student where sno=;&;
SqlDataAdapter da = new SqlDataAdapter (cmd);
da.SelectCommand.Connection.Open ();
string tempip =
da.SelectCommand.ExecuteScalar ().ToString ();
da.SelectCommand.Connection.Close ();
print (&this is text area!& + tempip);
// Update is called once per frame
void Update () {
直接连数据库作死 反编译游戏源码 数据库直接被弄掉
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或我的是VS2010,using System.Data.SqlC报错找不到SqlC添加引用里也没有_百度知道
我的是VS2010,using System.Data.SqlC报错找不到SqlC添加引用里也没有
我有更好的答案
是.NET4.0么?看看你的项目属性.另外引用 SYSTEM.DATA
来自:求助得到的回答
其他类似问题
为您推荐:
vs2010的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 unity system.drawing 的文章

 

随机推荐